1. 课程导学与环境准备
各位同学,欢迎来到《从零搭建OpenCV YOLO检测系统》的第一章。
我是你们这门课的主讲。做了快十年的计算机视觉,从OpenCV 2.x时代一路摸爬滚打过来,踩过的坑、填过的雷,说实话,真不少。今天咱们不急着敲代码,先把地基打牢。
这一章,我带你搞清楚三件事:OpenCV是什么、YOLO怎么一路进化过来的、以及怎么把开发环境一次配好。环境配不好,后面全是坑。我自己就吃过这个亏——刚学的时候配了三天环境,差点放弃。嗯,咱们别走弯路。
1.1 OpenCV简介:不只是“开源计算机视觉”
OpenCV,全称Open Source Computer Vision Library。说白了,就是一套帮你处理图像和视频的工具集。你想想看,让电脑看懂一张图,背后涉及多少数学运算?矩阵变换、特征提取、边缘检测……OpenCV把这些都封装成了函数,你直接调用就行。
核心定位: OpenCV不是深度学习框架,它是传统视觉算法的瑞士军刀。图像预处理、几何变换、摄像头采集、视频读写——这些活儿,PyTorch干不了,但OpenCV干得漂亮。
我个人习惯把OpenCV比作“视觉世界的标准库”。就像你用Python离不开print()一样,做视觉项目基本离不开OpenCV。它支持C++、Python、Java,咱们课程用Python接口,上手最快。
| 特性 | 说明 |
|---|---|
| 诞生时间 | 1999年,Intel发起 |
| 当前版本 | 4.x(咱们用4.8.0以上) |
| 核心模块 | core、imgproc、highgui、video、dnn等 |
| Python支持 | 通过cv2包,pip一键安装 |
| dnn模块 | 支持加载ONNX、TensorFlow、PyTorch模型 |
避坑提示: 我曾经在项目里直接用OpenCV的dnn模块加载YOLOv5的ONNX模型,结果发现输入尺寸搞错了,检测框全飘到天上去。记住:OpenCV的dnn模块对输入预处理要求很严格,后面我们会专门讲。
1.2 YOLO发展史:从v1到v8,一路狂奔
YOLO,You Only Look Once。名字就很霸气——只看一眼,就能把目标检测出来。它跟传统的两阶段检测器(比如Faster R-CNN)最大的区别就是:一次搞定。
传统方法先提候选区域,再分类。YOLO直接把整张图扔进网络,一次前向传播就输出所有检测结果。速度快到什么程度?在GPU上能跑到上百帧。实时检测,说的就是它。
我整理了一下YOLO的进化路线,你看这张图就清楚了:
为什么咱们选YOLOv8?原因很简单:官方维护、生态成熟、文档齐全。Ultralytics团队把训练、验证、导出、部署全链路打通了,配合OpenCV的dnn模块做推理部署,简直是绝配。
注意: YOLOv5和YOLOv8虽然名字像,但代码实现完全不同。v5是Ultralytics的早期作品,v8是重构后的官方版本。咱们课程统一用v8,但我会在部署章节讲怎么让OpenCV兼容不同版本的YOLO模型。
1.3 课程目标:你能学到什么?
这门课不是纯理论课,也不是纯调包课。我的目标是:让你真正能动手搭建一套可用的检测系统。
- 掌握OpenCV核心操作:图像读写、预处理、绘制、摄像头采集
- 理解YOLO原理:不深挖数学公式,但要知道网络怎么输出检测结果
- 独立训练YOLOv8模型:从数据标注到模型训练,全流程走一遍
- 用OpenCV部署YOLO:ONNX导出、dnn模块加载、后处理解析
- 实战项目:车牌检测、安全帽识别、人流统计——都是我在项目中做过的真实案例
一句话总结: 学完这门课,给你一张图片或一段视频,你能自己搭一套检测系统跑起来。不是调别人的demo,是你自己写的代码。
1.4 开发环境搭建:一次配好,后面省心
环境搭建这块,我踩过太多坑了。版本不兼容、CUDA装不上、cuDNN找不到……咱们按步骤来,一步都不要跳。
1.4.1 硬件要求
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4核 | 8核以上 |
| 内存 | 8GB | 16GB+ |
| GPU | 无(纯CPU可跑) | NVIDIA GTX 1060 6GB 以上 |
| 硬盘 | 20GB空闲 | SSD 512GB |
我的建议: 如果没有GPU,前期学OpenCV和YOLO推理完全够用。训练模型可以用Google Colab(免费GPU)。我自己刚开始学的时候就是用的Colab,完全没问题。
1.4.2 软件安装清单
咱们需要装的东西不少,但别怕。我按顺序列好了,你照着来:
- Python 3.8 - 3.11(推荐3.10,兼容性最好)
- CUDA Toolkit 11.8(GPU加速必备)
- cuDNN 8.6.0(深度学习加速库)
- OpenCV-Python 4.8.0+(
pip install opencv-python) - PyTorch 2.0+(
pip install torch torchvision) - Ultralytics(
pip install ultralytics,YOLOv8官方包)
1.4.3 验证环境是否装好
装完之后,打开终端或命令行,逐条运行以下命令。每一条都应该正常输出,不报错:
# 检查Python版本
python --version
# 检查CUDA
nvcc --version
# 检查PyTorch是否识别GPU
python -c "import torch; print(torch.cuda.is_available())"
# 应该输出 True
# 检查OpenCV
python -c "import cv2; print(cv2.__version__)"
# 检查Ultralytics
python -c "from ultralytics import YOLO; print('OK')"
常见坑: 我曾经遇到过PyTorch装好了但torch.cuda.is_available()返回False。原因是什么?CUDA版本和PyTorch版本不匹配。解决办法:去PyTorch官网用pip install torch==2.0.1+cu118指定CUDA版本安装。
1.4.4 快速测试:跑一个YOLOv8 demo
环境配好之后,咱们跑个demo庆祝一下。新建一个Python文件,写入以下代码:
from ultralytics import YOLO
# 加载预训练模型(会自动下载)
model = YOLO('yolov8n.pt')
# 对一张图片进行检测
results = model('https://ultralytics.com/images/bus.jpg')
# 显示结果
results[0].show()
如果能看到检测框画在图片上,恭喜你——环境搭建成功!