cv2 是 OpenCV 的 Python 接口,OpenCV(Open Source Computer Vision Library)是一个跨平台、开源的计算机视觉库,由 Intel 最早开发,现已广泛应用于图像处理、机器视觉、实时检测、视频分析等领域。
借助 cv2,开发者可以轻松实现图像读写、滤波变换、特征提取、人脸识别、目标追踪等各类视觉任务。
安装:
推荐使用 pip 安装预编译版本:
nginx
pip install opencv-python
如需视频/编解码支持:
nginx
pip install opencv-python-headless
如需完整扩展(含 contrib 模块):
nginx
pip install opencv-contrib-python
常见应用场景:
(1)图像读取、保存与格式转换。
(2)图像滤波、灰度化、二值化、边缘检测。
(3)图像几何变换(缩放、旋转、仿射等)。
(4)视频读取与逐帧处理。
(5)摄像头捕获与实时画面处理。
(6)图像特征提取(角点、边缘、轮廓)。
(7)人脸检测与识别、目标检测。
(8)OCR、姿态估计、手势识别等高级视觉任务。
◆ ◆ ◆
核心概念
1、图像是 NumPy 数组
在 cv2 中,图像被读入为三维 NumPy 数组(形如 (H, W, 3)),每个像素值通常是 uint8 类型,通道顺序为 BGR(蓝绿红),而非常见的 RGB。
2、实时处理友好
OpenCV 对实时场景优化良好,结合摄像头、OpenCL、GPU 或嵌入式设备使用广泛。
3、API 接口统一
无论是图像、视频还是实时流,大部分函数接口保持一致性,便于快速上手和调试。
◆ ◆ ◆
应用举例
例 1:读取图像并显示
makefile
import cv2
img = cv2.imread("cat.jpg") # 读取图片cv2.imshow("Cat", img) # 打开窗口显示cv2.waitKey(0) # 等待按键cv2.destroyAllWindows() # 关闭所有窗口
例 2:保存图像
bash
cv2.imwrite("output.jpg", img) # 将 NumPy 图像保存为文件
例 3:图像预处理(灰度、模糊、边缘)
apache
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)blur = cv2.GaussianBlur(gray, (5, 5), 0)edges = cv2.Canny(blur, 50, 150)cv2.imshow("Edges", edges)
例 4:使用摄像头实时捕获
python
cap = cv2.VideoCapture(0) # 打开默认摄像头
while True: ret, frame = cap.read() if not ret: break cv2.imshow("Camera", frame) if cv2.waitKey(1) == ord('q'): break
cap.release()cv2.destroyAllWindows()
例 5:图像绘图(绘制矩形、文本)
apache
cv2.rectangle(img, (50, 50), (200, 200), (0, 255, 0), 2)cv2.putText(img, "Hello OpenCV", (50, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)cv2.imshow("Annotated", img)
例 6:人脸检测(Haar 分类器)
apache
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
cv2.imshow("Faces", img)
◆ ◆ ◆
常用函数与模块概览
1、图像读写
cv2.imread(path):读取图像为 NumPy 数组
cv2.imwrite(path, image):保存图像
cv2.cvtColor(image, flag):颜色空间转换(如 BGR ↔ Gray)
2、图像处理
cv2.resize():图像缩放
cv2.GaussianBlur():高斯模糊
cv2.Canny():边缘检测
cv2.threshold():图像二值化
cv2.equalizeHist():直方图均衡化(常用于增强)
3、绘图与注释
cv2.line(), cv2.rectangle(), cv2.circle():绘制图形
cv2.putText():绘制文字
cv2.polylines():绘制轮廓
4、视频与摄像头
cv2.VideoCapture():打开视频或摄像头流
cap.read():读取帧
cv2.VideoWriter():保存视频
5、特征与识别
cv2.CascadeClassifier():Haar 特征分类器
cv2.SIFT()、cv2.ORB():关键点检测与匹配
cv2.findContours():轮廓提取
◆ ◆ ◆
补充说明
1、图像数据结构说明
图像被加载为 NumPy 数组:
彩色图像:(高度, 宽度, 3),BGR 顺序
灰度图像:(高度, 宽度),单通道
像素值范围通常为 0~255,类型为 np.uint8
2、与其他库集成良好
与 NumPy 无缝配合进行矩阵运算
可与 matplotlib 联合可视化图像结果(需注意颜色通道顺序)
与 PyTorch、TensorFlow 搭配用于预处理模型输入
3、性能与兼容性
OpenCV 底层用 C++ 实现,性能极高
Python 接口部分使用 Cython 封装,调用开销极小
支持跨平台运行(Windows、Linux、macOS、树莓派)
📘 小结


"点赞有美意,赞赏是鼓励"