【OpenCV零基础保姆级入门】一篇吃透计算机视觉预处理!全套实战代码,适配YOLO/深度学习
一、前言:为什么学深度学习必学OpenCV?
很多同学学完CNN、YOLO、三维重建后发现:模型训练看懂了,却不会处理图片、读取视频、调用摄像头、预处理数据。
OpenCV 就是计算机视觉的“工具箱”,是所有CV项目的前置基础:
YOLO检测前的图片读取、缩放、补边、去噪
视频流实时推理、逐帧处理、保存结果视频
摄像头实时采集、画面翻转、裁剪、标记框绘制
数据集清洗、二值化、滤波、形态学处理
一句话:所有视觉项目,都离不开OpenCV!
关注VX工棕号:迪哥谈AI,回复暗号:123 即可获取
关注VX工棕号:迪哥谈AI,回复暗号:123 即可获取
二、OpenCV 是什么?通俗讲解
2.1 核心介绍
OpenCV(Open Source Computer Vision Library):开源跨平台计算机视觉库,由英特尔发起,目前工业界、学术界通用标准工具。
专门用于:图像读取、视频处理、特征检测、目标跟踪、视觉预处理。
2.2 核心优势
开源免费、轻量高效、运行速度快
支持 Windows / Linux / Mac / 嵌入式设备
Python接口极简,新手零门槛
完美配合 PyTorch、YOLO、深度学习项目
2.3 常见应用场景
图像分类、目标检测、人脸识别、车牌识别、监控分析、瑕疵检测、AR交互、机器人视觉、三维重建预处理。
三、环境安装(100%成功版)
3.1 安装命令
推荐安装完整版,包含所有拓展功能(SIFT、特征匹配等):
pip install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple普通版(功能少,不推荐):
pip install opencv-python
3.2 验证是否安装成功
import cv2 print(cv2.__version__)
输出版本号即安装完成。
四、OpenCV核心基础:图像本质(新手必懂)
4.1 图片在计算机里是什么?
图片 =像素矩阵
灰度图:二维矩阵 [高, 宽],像素值 0~255(0黑、255白)
彩色图:三维矩阵 [高, 宽, 通道]
4.2 重点:OpenCV通道顺序
OpenCV 默认 BGR 顺序!!!
普通图片是 RGB,OpenCV读取后是 BGR,画图、保存不受影响,但和PyTorch/Matplotlib 混用必须转换!(新手最大坑)
五、最常用基础操作(必学)
5.1 图片读取、显示、保存
import cv2 # 1. 读取图片 img = cv2.imread("test.jpg") # 2. 显示图片 cv2.imshow("window", img) cv2.waitKey(0) # 0=按任意键关闭 cv2.destroyAllWindows() # 3. 保存图片 cv2.imwrite("save.jpg", img)关键知识点:
cv2.waitKey()必须写,否则窗口一闪而过!
5.2 灰度图转换(深度学习预处理高频)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imshow("gray", gray) cv2.waitKey(0)
5.3 尺寸缩放 & 裁剪
# 缩放 resize_img = cv2.resize(img, (640, 640)) # 裁剪 [高起始:高结束, 宽起始:宽结束] crop_img = img[100:400, 100:400]
5.4 绘制矩形框、文字(YOLO可视化必备)
# 画框 cv2.rectangle(img, (50,50), (200,200), (0,0,255), 2) # 写字 cv2.putText(img, "Object", (50,40), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,255,0), 2) cv2.imshow("draw", img) cv2.waitKey(0)颜色格式:(B,G,R),线条厚度正数
六、视频 & 摄像头实时读取(实战核心)
所有视频检测、实时推理、摄像头项目通用代码!
6.1 本地视频逐帧读取
import cv2 cap = cv2.VideoCapture("test.mp4") while True: ret, frame = cap.read() if not ret: break cv2.imshow("video", frame) if cv2.waitKey(20) & 0xFF == ord("q"): break cap.release() cv2.destroyAllWindows()
6.2 电脑摄像头实时画面
cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() cv2.imshow("camera", frame) if cv2.waitKey(1) & 0xFF == ord("q"): break cap.release() cv2.destroyAllWindows()参数说明:VideoCapture(0) 代表默认摄像头
七、常用图像处理操作(数据集预处理必备)
7.1 二值化(黑白分割)
用于轮廓检测、字符识别、瑕疵检测
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) cv2.imshow("binary", binary) cv2.waitKey(0)
7.2 滤波去噪(图像平滑)
# 高斯模糊(最常用) gauss = cv2.GaussianBlur(img, (5,5), 0) # 均值滤波 mean = cv2.blur(img, (5,5))
7.3 边缘检测(Canny)
edge = cv2.Canny(img, 50, 150) cv2.imshow("edge", edge) cv2.waitKey(0)
八、深度学习最常用:BGR转RGB
重点!PyTorch、Matplotlib、数据集训练都是RGB,OpenCV读取是BGR,不转换会颜色错乱!
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
九、新手高频报错与解决方案
窗口一闪而过:缺少
cv2.waitKey()图片读取为None:路径中文/错误/文件不存在,OpenCV不支持中文路径
摄像头打不开:被其他软件占用、设备序号不是0
颜色诡异偏色:BGR/RGB未转换,和深度学习框架混用必转
十、OpenCV完整学习路线(适配深度学习)
阶段1:基础必会(1天)
读写图片视频、摄像头调用、缩放裁剪、绘图、颜色转换
阶段2:图像预处理(2天)
灰度、二值化、滤波、边缘检测、形态学操作、阈值分割
阶段3:进阶视觉能力(3-5天)
轮廓检测、特征点匹配、透视变换、视频保存、帧处理
阶段4:深度学习结合
YOLO画面预处理、实时推理画面绘制、数据集清洗、视频推理项目落地
十一、总结
OpenCV 是所有计算机视觉项目的地基。
CNN、YOLO、图像分类、三维重建、视频分析,所有视觉项目第一步都是 OpenCV 预处理。
新手不用啃完所有函数,掌握本文全套操作,足以应付95%的深度学习实验和项目开发。
