Python 第三方库:cv2(OpenCV 图像处理与计算机视觉库)

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、树莓派)

📘 小结

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

相关推荐
霍田煜熙1 分钟前
C++ 部署小型图书管理系统
开发语言·c++·算法
惊鸿.Jh3 分钟前
若依自定义后端接口404踩坑记录
java·开发语言
缺点内向3 分钟前
C# 中如何从 URL 下载 Word 文档:基于 Spire.Doc 的高效解决方案
开发语言·c#·word
源码获取_wx:Fegn08953 分钟前
基于springboot + vue考勤管理系统
java·开发语言·vue.js·spring boot·后端·spring·课程设计
weixin_307779135 分钟前
Jenkins声明式管道扩展点API:深度解析与应用指南
开发语言·ci/cd·自动化·jenkins·etl
认真敲代码的小火龙5 分钟前
【JAVA项目】基于JAVA的仓库管理系统
java·开发语言·课程设计
Code_Geo5 分钟前
JAVA大数据场景使用StreamingOutput
java·大数据·开发语言·streamingoutput
明月醉窗台5 分钟前
Opencv 之 几个常见的对比度调整方法
人工智能·opencv·计算机视觉
dyxal6 分钟前
论文格式魔法全书:用Word通配符和宏一键完成专业排版
开发语言·word