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

📘 小结

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

相关推荐
江塘2 小时前
机器学习-决策树多种生成方法讲解及实战代码讲解(C++/Python实现)
c++·python·决策树·机器学习
多彩电脑2 小时前
死循环逻辑检测
数据结构·python·算法·动态规划
YongCheng_Liang2 小时前
Python 基础核心模块全解析:从入门到实践的知识框架
python
初见无风2 小时前
4.4 Boost库工具类assign 的使用
开发语言·c++·boost
月夜的风吹雨2 小时前
【C++ STL容器适配器】:解密Stack、Queue与Priority Queue的设计智慧
开发语言·c++·stl·优先级队列··队列·适配器
二川bro3 小时前
第45节:分布式渲染:Web Workers多线程渲染优化
开发语言·javascript·ecmascript
RanMatrix3 小时前
python-logging模块
python
2501_941111933 小时前
基于C++的区块链实现
开发语言·c++·算法
北京青翼科技3 小时前
【HD200IS A2 DK 】昇腾 310B 高可靠智能计算开发套件
图像处理·人工智能·信号处理·智能硬件