python学习笔记:opencv的图像操作

这篇具有很好参考价值的文章主要介绍了python学习笔记:opencv的图像操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是opencv?

opencv是一个开源的计算机视觉库,可以在http://opencv.org获取,opencv库用C,C++,python等多种语言编写,在使用中,经常用opencv打开存储器的图像,对摄像头的图像进行捕捉并保存或者对图像进行预处理,以实现图像更好的额完成算法分类,应用领域很广:在人机互动,物体识别,图像分割,人脸识别,动作识别,运动跟踪,机器人,运动分析,机器视觉,汽车安全驾驶等方面都有涉及。

图像像素的存储形式?

1.对于只有黑白颜色的灰度图,为单通道,一个像素块对应矩阵中一个数字,数值为0-255,0表示最暗(黑色),255表示最亮(白色)

python学习笔记:opencv的图像操作

 

2.对于采用RGB模式的彩色图片,则为三通道图,RED,GREEN,BLUE三原色,按照不同比例相加,一个像素块对应矩阵中一个向量

python学习笔记:opencv的图像操作 

注意:

彩色图像的三维矩阵
第一轴轴长:图片宽度
第二轴轴长:图片高度
第三轴轴长:图片深度

opencv采用BGR模式,而不是RGB所以
第一轴轴长:图片高度
第二轴轴长:图片宽度
第三轴轴长:图片深度

opencv操作图像

python学习笔记:opencv的图像操作

 1.读取图像,并显示

import cv2
# 读取本地某个路径下的图片文件,返回值为numpy中的ndarray类型
img = cv2.imread("1.JPG")
print(type(img))
print(img.shape)

# 显示img对象中的图片
cv2.imshow("1", img)

# 阻塞等待任意按键按下,再退出;参数代表永久阻塞
# 返回值表示按下按键的key值
cv2.waitKey(0)
# 退出时销毁该窗口
cv2.destroyAllWindows()

2.图片的变换

在人工智能对图片进行处理时提取特征值时往往需要灰度图,所以我们需要对图片进行一些处理。

"""
 2.图片的变换
"""
img = cv2.imread("1.JPG")
print(type(img))
print(img.shape)
cv2.imshow("1", img)
# 由于img为彩色图像数据,而人工智能特征值提取,需要灰度图
# 将 bgr格式的彩图转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# resize():改变图片大小,实质是压缩
gray = cv2.resize(gray, (480, 640))
print(gray)
print(gray.shape)
cv2.imshow("2", gray)

cv2.waitKey(0)
cv2.destroyAllWindows()

python学习笔记:opencv的图像操作

 3.图像截取,抠图

图像截图抠图本质上也是对图像对应的numpy数组进行索引切片得到相应的部分

"""
3.图像截取,抠图  
"""
img = cv2.imread("1.JPG")
print(type(img))
print(img.shape)
cv2.imshow("1", img)
# # 索引切片进行抠图
eyes = img[480: 480+94, 640: 640+118, :]
cv2.imshow("2", eyes)
# # 将图片数据写入本地文件
cv2.imwrite("eyes.jpg", eyes)
cv2.waitKey(0)
cv2.destroyAllWindows()

4.opencv操作摄像头

python学习笔记:opencv的图像操作

 

import cv2
"""
4.opencv操作摄像头
"""
# 打开摄像头0
cap = cv2.VideoCapture(0)
if not cap.isOpened():
    print("摄像头未打开")
    exit(0)
while True:
    # 读取一帧图片
    ret, img = cap.read()
    print(img)
    cv2.imshow("1", img)
    if cv2.waitKey(50) == 27:
        break
cv2.destroyAllWindows()

5.opencv操作摄像头,显示文字,画框

putText()

      参数1:图片数据对象

      参数2:显示的文本数据
      参数3:文本显示位置

      参数4:文本字体样式
      参数5:字体的大小

      参数6:字体的颜色rgb
      参数7:文字的线条粗细

rectangle():绘制矩形框

"""
5.opencv操作摄像头,显示文字,画框
"""
 import time
# # 打开摄像头0
 time_start = time.time()
 cap = cv2.VideoCapture(0)
 if not cap.isOpened():
     print("摄像头未打开")
     exit(0)
 while True:
     # 读取一帧图片
     ret, img = cap.read()
     # 参数1:图片数据对象 参数2:显示的文本数据
     # 参数3:文本显示位置 参数4:文本字体样式
     # 参数5:字体的大小 参数6:字体的颜色rgb
     # 参数7:文字的线条粗细
     cv2.putText(img, "FPS", (240, 320), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color=(0, 123, 220), thickness=2)
     # 绘制矩形框,pt1:矩形框左下角点坐标,pt2矩形框右下角点坐标
     cv2.rectangle(img, pt1=(270, 190), pt2=(370, 290), color=(0, 0, 0), thickness=5)
     cv2.imshow("1", img)
     if cv2.waitKey(50) == 27:
         break
 cv2.destroyAllWindows()

6.opencv人脸检测

path是我们使用人脸检测库文件的文件路径位置,通过库的支持我们将每一帧的图片进行比对得到人脸的坐标,然后通过绘制矩形,达到人脸识别的效果。文章来源地址https://www.toymoban.com/news/detail-468902.html

"""
6.opencv人脸检测
"""
path = 'D:\\anaconda\\envs\\tf\\Library\\etc\\haarcascades\\haarcascade_frontalface_default.xml'

model = cv2.CascadeClassifier(path)
cap = cv2.VideoCapture(0)
if not cap.isOpened():
    print("摄像头未打开")
    exit(0)
while True:
    ret, img = cap.read()
    print(img.shape)
    # 由于该模型,要求图片必须是灰度图,所以必须转换
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 将灰度图送入模型进行检测,返回列表,列表中元素为每个人脸的位置信息【x, y, w, h】
    facelist = model.detectMultiScale(gray)
    if len(facelist) < 0:
        print("未检测到")
        cv2.waitKey(100)
        break
    print(facelist)
    for i in facelist:
        x, y, w, h = i
    cv2.rectangle(img, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 0), thickness=2)
    cv2.imshow("1", img)
    if cv2.waitKey(50) == 27:
        break
cv2.destroyAllWindows()

到了这里,关于python学习笔记:opencv的图像操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python+OpenCV 零基础学习笔记(4-5):计算机图形基础+Python相对文件路径+OpenCV图像+OpenCV视频

    【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程 CSDN标题里个括号对应视频的分P OpenCV+Python CSDN专栏 Gitee 项目地址 Python:3.11.5 Anaconda:23.7.4 IDE:vscode 运行环境:Windows OpenCV:4.8.1 Python+OpenCV 零基础学习笔记(1-3):anaconda+vscode+jupyter环境配置 本节课来了解以下OpenCV的简单使用

    2024年02月03日
    浏览(76)
  • python-opencv学习笔记(八):判断是否雾天与图像能见度测算

    本篇是最近碰到的一个关于雾天能见度的问题,然后查阅到很多资料,顺便记录一下思考过程,进行总结归类成笔记。主要参考资料是华为杯2020年E题论文,结合一下自己的实际情况,做出了改进与延伸,文献在最后引出。 1. 大气能见度: 能见度是气象、公路行车、飞机飞行

    2024年02月05日
    浏览(37)
  • 【笔记】OpenCV图像基本操作

    目录 一、图像属性 1.1图像格式 1.2图像尺寸 1.3图像分辨率和通道 1.4图像直方图 1.5图像颜色空间 二、基本操作 2.1 图像读取 cv2.imread() 2.2 图像的显示 cv2.imshow() 2.3 图像的保存 cv2.imwrite() 2.4 用matplotlib显示图像 plt.imshow() 2.5 视频读取 cv2.VideoCapture() 2.6 图像截取、颜色通道提取

    2024年02月03日
    浏览(408)
  • 【计算机视觉—python 】 图像处理入门教程 —— 图像属性、像素编辑、创建与复制、裁剪与拼接【 openCV 学习笔记 005 to 010 and 255】

    OpenCV中读取图像文件后的数据结构符合Numpy的ndarray多维数组结构,因此 ndarray 数组的属性和操作方法可用于图像处理的一些操作。数据结构如下图所示: img.ndim:查看代表图像的维度。彩色图像的维数为3,灰度图像的维度为2。 img.shape:查看图像的形状,代表矩阵的行数(高

    2024年01月19日
    浏览(66)
  • opencv 基础学习08-图像通道操作

    OpenCV的通道拆分功能可用于将多通道图像拆分成单独的通道,这在图像处理和计算机视觉任务中具有许多应用场景。以下是一些通道拆分的常见应用场景: 图像处理 :在某些图像处理任务中,需要对图像的不同通道进行独立处理。例如,可以对彩色图像的RGB通道进行分别处

    2024年02月16日
    浏览(40)
  • opencv学习(一)图像的基本操作

    cv2.IMREAD_COLOR:彩色图像 cv2.IMREAD_GRAYSCALE:灰度图像 cv2.imread()读取图片,当括号里面是 1 时,也就是替代了cv2.IMREAD_COLOR,得到 彩色图 。 cv2.imread()读取图片,当括号里面是 0 时,替代了cv2.IMREAD_GRAYSCALE,得到 灰度图 。 cv.inshow()函数为创建一个展示窗口,括号里面分别为 图片名字

    2024年02月05日
    浏览(103)
  • Opencv+Python图像基本操作

    目录 图像的读取、显示和保存 获取图像属性  图像截取  绘图功能 画线 画矩形 画圆圈 画椭圆          画多边形 向图像添加文本 cv2.imread() ,  cv2.imshow() ,  cv2.imwrite()分别表示读取图片,显示图片,写入图片   retval = cv2.imread(文件名 [,显示控制参数]) cv2.IMREAD_UNCHANGED:不改

    2024年02月04日
    浏览(50)
  • OpenCV自学笔记四:感兴趣区域(ROI)、通道操作、获取图像性质

    感兴趣区域(ROI)是指在图像或画面中,我们所关注或感兴趣的特定区域。对于图像处理任务,使用ROI可以提取、操作或分析该区域的特征。 在OpenCV中,可以使用numpy数组的切片操作来定义和提取ROI。以下是一个简单的例子,展示如何使用ROI来提取图像的一部分: 在上述代码

    2024年02月04日
    浏览(40)
  • OpenCV图像处理学习十,图像的形态学操作——膨胀腐蚀

    一.形态学操作概念 图像形态学操作是指基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学对图像进行处理。 形态学有四个基本操作:腐蚀、膨胀、开操作、闭操作,膨胀与腐蚀是图像处理中最常用的形态学操作手段。 二.形态学操作-膨胀 跟卷积

    2024年02月05日
    浏览(53)
  • python的opencv操作记录(十)——图像融合

    最近碰到一个项目上的难题,是要从电动显微镜对焦的多张图像进行融合。因为,显微镜物镜的景深范围较小,可能在同一视野中有多个需要拍摄的物体位于不同的景深范围内,所以想通过图像的融合,将不同景深上的多张图像进行融合,从而把这些物体都在同一张图像中对

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包