Skip to content

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)

京ICP备2024093538号-1