Appearance
OpenCV
- 全称:Open Source Computer Vision Library(开源计算机视觉库)
- 诞生:英特尔开发,全球最流行的视觉工具
- 底层:C++ 编写,速度极快
- 上层:提供 Python 接口
OpenCV = 图像 / 视频的 “万能工具箱”
负责读图 → 处理 → 显示 → 保存,是所有深度学习(包括 YOLO)的输入输出工具。
1.核心作用
1. 图像 / 视频读取(YOLO 必须靠它)
- 读取本地图片
- 读取视频文件
- 打开电脑 / 摄像头实时取流
- 网络视频流读取 YOLO 自己不能读任何图像,必须靠 OpenCV 提供画面。
2. 图像预处理(送入 YOLO 前必须做)
- 缩放(resize)到 YOLO 需要的尺寸(640×640)
- 颜色空间转换:BGR → RGB(OpenCV 默认 BGR,YOLO 需要 RGB)
- 裁剪、旋转、平移
- 去噪、模糊、灰度化
3. 结果可视化(YOLO 输出必须靠它)
- 画检测框
- 写类别文字、置信度
- 显示画面窗口
- 保存结果图 / 视频
4. 传统计算机视觉(高级功能)
- 边缘检测
- 轮廓查找
- 特征点匹配
- 目标追踪
- 图像分割、形态学操作
2. YOLO & OpenCV工作流
YOLO 只负责 “识别”,不负责 “看图像” 和 “画结果”
- YOLO 模型:给它张量,返回框坐标
- OpenCV:负责把图像变成张量,再把坐标画成框
Plain
OpenCV 读图
↓
OpenCV 预处理(resize、转RGB)
↓
送入 YOLO 推理
↓
YOLO 输出框坐标
↓
OpenCV 画框、显示、保存3. 最常用函数
3.1. 读取图像
python
import cv2
img = cv2.imread("test.jpg") # 读取图片3.2. 读取摄像头 / 视频
python
cap = cv2.VideoCapture(0) # 0 = 摄像头
ret, frame = cap.read() # 读一帧画面3.3. 颜色空间转换(YOLO 必备)
不同颜色空间,适合做不同的事情;转换就是为了让模型看得更准、让处理更简单、让效果更稳定。
3 个最实用场景
- 给 YOLO / 深度学习模型喂图
- OpenCV 读图默认是 BGR 顺序, 所有深度学习模型(PyTorch、YOLO、MMDet)都要 RGB 顺序
- 变成灰度图,加速计算 & 简化处理
- 用处:减少计算量、突出轮廓、去颜色干扰
- HSV 空间:专门做颜色筛选(超级常用)
- 用处:提取特定颜色(红 / 黄 / 绿 / 蓝)
python
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)原因:OpenCV 默认是 BGR,深度学习模型都要 RGB。
3.4. 缩放图像
python
img = cv2.resize(img, (640, 640)) # YOLO 标准输入3.5. 画框(YOLO 检测后展示)
python
cv2.rectangle(img, (x1, y1), (x2, y2), (0,255,0), 2)
cv2.putText(img, "person", (x1, y1-10), ...)3.6. 显示图像
python
cv2.imshow("result", img)
cv2.waitKey(0)3.7. 保存图像
python
cv2.imwrite("output.jpg", img)