python中的cv2库

1. 核心功能
- 计算机视觉:支持图像处理、视频分析、特征提取、目标检测等任务。
- 跨平台:可在 Windows、Linux、macOS 等系统上运行。
- 算法丰富:提供 2500+ 优化算法,涵盖经典和先进的计算机视觉技术。
2. 常用类与方法
图像读取与显示:
1
2
3
4
5
6
7
8
9
10import cv2
# 读取图像(支持 JPG、PNG 等格式)
img = cv2.imread("image.jpg", cv2.IMREAD_COLOR) # 彩色模式(默认)
# img = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE) # 灰度模式
# 显示图像
cv2.imshow("Image Window", img)
cv2.waitKey(0) # 等待按键(0 表示无限等待)
cv2.destroyAllWindows() # 关闭所有窗口图像处理:
1
2
3
4
5
6
7
8# 颜色空间转换(BGR 转灰度)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 调整图像大小
resized = cv2.resize(img, (800, 600))
# 边缘检测(Canny 算法)
edges = cv2.Canny(gray, 100, 200)特征检测与匹配:
1
2
3
4
5
6
7# SIFT 特征检测
sift = cv2.SIFT_create()
keypoints, descriptors = sift.detectAndCompute(img, None)
# 特征匹配(Brute-Force)
bf = cv2.BFMatcher()
matches = bf.match(descriptors1, descriptors2)视频处理:
1
2
3
4
5
6
7
8
9
10
11
12# 打开视频文件或摄像头
cap = cv2.VideoCapture("video.mp4") # 或 0 表示默认摄像头
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
cv2.imshow("Video", frame)
if cv2.waitKey(25) & 0xFF == ord("q"):
break
cap.release() # 释放资源
3. 使用示例
读取并显示图像:
1
2
3
4img = cv2.imread("image.jpg")
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()灰度转换与边缘检测:
1
2
3
4gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
cv2.imshow("Edges", edges)
cv2.waitKey(0)人脸检测(需 Haar 级联文件):
1
2
3
4
5
6face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.imshow("Faces", img)
cv2.waitKey(0)
4. 注意事项
- 安装依赖:需先安装 OpenCV 库,使用命令
pip install opencv-python
。 - 颜色空间:OpenCV 默认使用 BGR 格式,与其他库(如 PIL、Matplotlib)交互时需转换。
- 图像路径:确保路径正确,避免读取失败(返回
None
)。 - 资源释放:处理视频或摄像头时,及时调用
release()
释放资源。 - 异常处理:检查图像是否加载成功,避免后续操作报错。
总结
- 读取图像:
cv2.imread()
,支持多种格式和读取模式。 - 处理图像:使用
cvtColor
、resize
、Canny
等函数进行颜色转换、缩放、边缘检测。 - 特征检测:通过 SIFT、SURF 等算法提取关键点,再进行特征匹配。
- 视频处理:用
VideoCapture
读取视频,逐帧处理并分析。
- 标题: python中的cv2库
- 作者: lemon
- 创建于 : 2025-04-12 22:06:39
- 更新于 : 2025-04-12 22:10:51
- 链接: https://lemon2003.github.io/post/20250412220639.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论