OpenCV计算机视觉实战(2)——环境搭建与OpenCV简介
OpenCV计算机视觉实战(2)——环境搭建与OpenCV简介
- 0. 前言
- 1. OpenCV 安装与配置
- 1.1 安装 Python-OpenCV
- 1.2 配置开发环境
- 2. OpenCV 基础
- 2.1 图像读取与显示
- 2.2 图像保存
- 3. 摄像头实时捕获
- 小结
- 系列链接
0. 前言
OpenCV
(Open Source Computer Vision Library
) 是一个开源计算机视觉库,广泛应用于图像处理、机器视觉、人工智能等领域。本文将手把手教你从环境搭建到运行第一个 OpenCV
程序,包含图像的读取、显示、保存,以及使用摄像头实时捕获图像的基础操作。
1. OpenCV 安装与配置
1.1 安装 Python-OpenCV
通过 pip
快速安装 OpenCV
的核心模块和扩展模块:
# 安装基础模块(核心功能)
pip install opencv-python
# 安装扩展模块(包含SIFT/SURF等额外功能)
pip install opencv-contrib-python
安装完成后,进行验证:
>>> import cv2
>>> cv2.__version__
1.2 配置开发环境
推荐以下三种开发工具:
工具 | 配置建议 |
---|---|
PyCharm | 创建 Python 项目 → 安装 opencv-python 包 → 配置虚拟环境 |
VSCode | 安装 Python 扩展 → 使用 Jupyter Notebook 交互式调试 |
Jupyter Lab | 适合快速实验 → 通过 %matplotlib inline 实时显示图像 |
2. OpenCV 基础
2.1 图像读取与显示
OpenCV
读取图像非常简单,下面是一个 OpenCV
版的 Hello World
程序:
import cv2# 读取图像
img = cv2.imread("cat.jpg") # 显示图像(窗口名 + BGR格式数据)
cv2.imshow("Demo", img)
cv2.waitKey(0) # 按任意键继续
cv2.destroyAllWindows() # 关闭所有窗口
关键函数解析:
cv2.imread()
:读取图像,默认参数cv2.IMREAD_COLOR
为彩色模式(使用参数cv2.IMREAD_GRAYSCALE
可以读取为灰度图像)cv2.imshow()
:创建一个窗口并显示图像cv2.waitKey()
:参数为等待时间(毫秒),0
表示无限等待直到用户按键cv2.destroyAllWindows()
:关闭所有OpenCV
窗口
2.2 图像保存
OpenCV
提供了 imwrite()
函数来保存图像到文件:
# 保存图像(质量参数 0-100)
cv2.imwrite("output.jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 90])
参数说明:
- 第一个参数:保存的文件路径(包括文件名和扩展名)
- 第二个参数:要保存的图像数据
- 第三个参数(可选):保存参数,以列表形式提供
常用保存参数:
JPEG
格式:
[cv2.IMWRITE_JPEG_QUALITY, quality] # quality: 0-100,默认95
PNG
格式:
[cv2.IMWRITE_PNG_COMPRESSION, compression] # compression: 0-9,默认1
WEBP
格式:
[cv2.IMWRITE_WEBP_QUALITY, quality] # quality: 1-100,默认100
3. 摄像头实时捕获
使用以下 OpenCV
代码可以方便的实时读取电脑摄像头视频流:
import cv2
# 打开默认摄像头(设备索引为0)
cap = cv2.VideoCapture(0)# 检查摄像头是否成功打开
if not cap.isOpened():print("无法打开摄像头")exit()
while True:# 逐帧捕获ret, frame = cap.read()if not ret:print("无法接收帧,退出")break# 显示捕获到的帧cv2.imshow('Live Video', frame)# 如果按下 'q' 键,则退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放资源
cap.release()
cv2.destroyAllWindows()
关键函数解析:
cv2.VideoCapture(0)
:初始化摄像头,0
通常代表计算机的默认摄像头,如果有多个摄像头,可以尝试1
,2
等索引,也可以传入视频文件路径来读取视频文件cap.read()
:读取一帧,返回值有两个,ret
:布尔值,表示是否成功读取帧,如果读取失败,ret
为False
,应退出循环;frame
:当前帧的图像数据cv2.imshow()
:显示捕获到的帧,可以在循环中添加任意图像处理操作,可以同时显示多个窗口展示不同的处理效果cv2.waitKey(1) & 0xFF == ord('q')
:按q
退出,ord('q')
获取字符q
的ASCII
码cap.release()
:释放摄像头资源
除此之外,我们也可以对摄像头进行高级设置,例如,设定分辨率:
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
获取和设置帧率:
# 获取当前帧率
fps = cap.get(cv2.CAP_PROP_FPS)# 设置帧率
cap.set(cv2.CAP_PROP_FPS, 30)
其他常用属性的设置:
# 亮度
cap.set(cv2.CAP_PROP_BRIGHTNESS, 0.5) # 0-1
# 对比度
cap.set(cv2.CAP_PROP_CONTRAST, 0.5) # 0-1
# 饱和度
cap.set(cv2.CAP_PROP_SATURATION, 0.5) # 0-1
# 增益
cap.set(cv2.CAP_PROP_GAIN, 0) # 自动增益通常为0
# 曝光
cap.set(cv2.CAP_PROP_EXPOSURE, -7) # 负值表示自动曝光
检查摄像头支持的属性:
for i in range(0, 18):print(f"Property {i}: {cap.get(i)}")
小结
通过本文,我们已经完成了 OpenCV
环境的搭建,了解了基本图像读取、显示、保存的方法,并学会了如何使用摄像头捕获实时视频帧。
系列链接
OpenCV计算机视觉实战(1)——计算机视觉简介