目录
一、Opencv简介
OpenCV 的主要特点
二、Opencv库安装
opencv-python%E5%BA%93%E5%AE%89%E8%A3%85-toc" style="margin-left:80px;">1、opencv-python库安装
opencv-contrib-python%E5%BA%93%E5%AE%89%E8%A3%85-toc" style="margin-left:80px;">2、opencv-contrib-python库安装
三、Opencv 基础操作
opencv%E5%BA%93%E7%9A%84%E5%AF%BC%E5%85%A5-toc" style="margin-left:80px;">1、opencv库的导入
2、读取、展示图片
3、查看图片信息
4、控制图片显示时间、关闭窗口
5、读取灰度图
6、彩色图片转灰度图
7、图片的保存
8、读取视频、摄像头
9、图像的区域分割
10、视频的区域分割
一、Opencv简介
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,广泛应用于图像处理、视频分析、物体检测、人脸识别、增强现实等领域。它提供了丰富的函数和工具,支持多种编程语言(如C++、Python、Java等),并且可以在不同的操作系统(如Windows、Linux、macOS等)上运行。
二、Opencv库安装
opencv-python%E5%BA%93%E5%AE%89%E8%A3%85">1、opencv-python库安装
在命令提示符界面输入以下命令即可直接安装opencv-python库,后面为指定的版本。直接安装的话会默认安装最新版本,新版本会存在一些兼容性以及版权问题,所以不推荐安装最新版本。
pip install opencv-python==3.4.18.65
opencv-contrib-python%E5%BA%93%E5%AE%89%E8%A3%85">2、opencv-contrib-python库安装
opencv-contrib-python
是 Opencv 的一个扩展库,它包含了 Opencv 主库之外的额外模块。这些模块通常是一些实验性或高级功能,可能尚未完全成熟或因专利限制等原因未被包含在 Opencv 的主库中。通过安装opencv-contrib-python
,用户可以访问更多的计算机视觉和图像处理功能,扩展 Opencv的能力。
pip install opencv-contrib-python==3.4.18.65
三、Opencv 基础操作
opencv%E5%BA%93%E7%9A%84%E5%AF%BC%E5%85%A5">1、opencv库的导入
import cv2
2、读取、展示图片
img = cv2.imread("./images/img.png")
cv2.imshow("img", img)
3、查看图片信息
img = cv2.imread("./images/img.png")
cv2.imshow("img", img)
# img.shape查看图片的形状,高、宽、通道数
print("shape:",img.shape)
# 查看图片的像素点个数
print("size:",img.size)
# 查看图片数值的数据类型
print("dtype:",img.dtype)
4、控制图片显示时间、关闭窗口
# 控制显示时间
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()
cv2.waitKey(),括号里面填入的数值代表图片显示时长,单位为ms。当为0时表示一直存在,按下任意键结束。
5、读取灰度图
读取图片时,在图片名后加上IMREAD_GRAYSCALE即可以灰度图的形式读取图片
img_gray = cv2.imread('./images/img.png',IMREAD_GRAYSCALE)
# img_gray = cv2.imread('./images/img.png',0)
cv2.imshow('img_gray',img_gray)
cv2.waitKey(0)
6、彩色图片转灰度图
如果已经读取了一张图片想转为灰度图,可以用以下方法
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
7、图片的保存
cv2.imwrite('保存的图片路径或名称',img)
8、读取视频、摄像头
当cv2.VideoCapture()的括号中为视频路径时读取的是视频,当为0时读取的是本机摄像头,为1、2、3...读取的为外接摄像头。
Video = cv2.VideoCapture("视频名称或路径")
# 判断视频是否打开
if not Video.isOpened():print("无法打开视频")exit()while True:# ret为bool值ret, frame = Video.read()if not ret:break# 将视频转换为灰度图frame = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)# 显示当前帧cv2.imshow('frame',frame)if cv2.waitKey(1) == 27:break
# 释放视频资源
Video.release()
# 关闭窗口
cv2.destroyAllWindows()
9、图像的区域分割
img[]的中括号中,逗号前的代表图片的高,逗号后的代表宽,图片的(0,0)点在做左上角。
img2 = cv2.imread('./images/img.png')
# [高,宽]
img_split = img2[100:400,100:500]
cv2.imshow('split',img_split)
cv2.imshow('yuantu',img2)
cv2.waitKey(0)
10、视频的区域分割
使用分割图片的原理同样可以对视频进行操作
Vedio1 = cv2.VideoCapture('./images/sishi.mp4')
while True:ret,frame = Vedio1.read()frame_split = frame[0:500,200:700]cv2.imshow('split1',frame_split)cv2.imshow('yuan',frame)cv2.waitKey(10)if cv2.waitKey(1) == 27:break
Vedio1.release()
cv2.destroyAllWindows()