第一章 课程导学与环境搭建
各位同学,欢迎来到《OpenCV YOLO 检测与实时流处理》的第一课。
我是这门课的主讲。说实话,每次带新班,我都很看重这第一节。为什么?因为环境搭不好,后面全是坑。我自己早年学计算机视觉时,光装OpenCV就折腾了两天,最后发现是Python版本不对。嗯,这种弯路,我希望你们一次都不要走。
1.1 OpenCV 是什么?
OpenCV,全称Open Source Computer Vision Library。说白了,就是一套开源的计算机视觉工具包。
它诞生于1999年,最初是Intel的研究项目。我2015年第一次接触它时,版本还是2.4.x。那时候文档少,遇到问题全靠翻源码。现在好多了,社区活跃,资料也全。
核心能力速览:
- 图像读取、显示、保存
- 图像预处理(缩放、滤波、颜色空间转换)
- 特征提取与匹配
- 视频流处理
- 深度学习模型推理(DNN模块)
你想想看,一个库能同时搞定图像处理和深度学习推理,这就是我们选它的理由。
1.2 YOLO 发展史
YOLO,You Only Look Once。这个名字很直白——只看一次。
传统目标检测算法,比如R-CNN系列,需要先生成候选区域,再逐个分类。YOLO不一样,它把检测当成回归问题,一次前向传播就输出所有边界框和类别。
| 版本 | 发布时间 | 核心特点 |
|---|---|---|
| YOLOv1 | 2016 | 开创性工作,速度极快但精度一般 |
| YOLOv2 | 2017 | 引入Anchor Box,多尺度训练 |
| YOLOv3 | 2018 | Darknet-53骨干,多尺度预测 |
| YOLOv4 | 2020 | Bag of Freebies,速度和精度平衡 |
| YOLOv5 | 2020 | PyTorch实现,工程化极好 |
| YOLOv8 | 2023 | Ultralytics出品,支持分类/检测/分割 |
我个人习惯用YOLOv5和YOLOv8。v5稳定,v8功能全。你在项目中选哪个?看场景。如果追求极致速度,v5 nano模型在边缘设备上跑得很欢。如果需要实例分割,v8是更好的选择。
我的建议:初学者从YOLOv5开始。文档最全,社区最活跃,踩坑有人帮。
1.3 课程目标
这门课不是纯理论课。我们不讲那些花哨的数学推导。我们要做的是:
- 用OpenCV读取摄像头或视频文件
- 加载YOLO模型进行实时检测
- 在画面上绘制检测结果
- 处理多路视频流
- 优化推理性能
说白了,学完这门课,你能自己搭一套实时目标检测系统。从摄像头采集到画面显示,一条龙搞定。
1.4 Anaconda 与 Python 环境配置
环境配置这块,我吃过不少亏。曾经有一次,我在项目里同时用了两个不同版本的TensorFlow,结果Python解释器直接崩溃。从那以后,我坚持用虚拟环境。
Anaconda是目前最省心的Python发行版。它自带conda包管理器,创建虚拟环境就像切菜一样简单。
安装步骤
- 访问Anaconda官网,下载对应系统的安装包
- 安装时勾选"Add Anaconda to my PATH environment variable"
- 打开终端或命令提示符,验证安装:
conda --version
创建虚拟环境
conda create -n opencv-yolo python=3.9
conda activate opencv-yolo
为什么用Python 3.9?因为OpenCV和YOLO的依赖库对3.9支持最好。3.10以上有些包还没完全适配。这是我踩坑换来的经验。
注意:不要用系统自带的Python。项目一多,依赖冲突会让你怀疑人生。虚拟环境是底线。
1.5 OpenCV 与 YOLO 依赖安装
环境激活后,我们来装依赖。
安装 OpenCV
pip install opencv-python
pip install opencv-contrib-python
opencv-python是核心库,opencv-contrib-python包含扩展模块。我建议两个都装。contrib里有一些好用的算法,比如SIFT、SURF,虽然现在有专利问题,但学习阶段用用无妨。
安装 YOLO 依赖
我们主要用Ultralytics的YOLOv8实现:
pip install ultralytics
pip install torch torchvision
Ultralytics会自动下载模型权重。第一次运行时会慢一些,别急。
验证安装
写个简单脚本测试一下:
import cv2
import torch
from ultralytics import YOLO
print("OpenCV version:", cv2.__version__)
print("PyTorch version:", torch.__version__)
# 加载YOLOv8模型
model = YOLO('yolov8n.pt')
print("YOLO model loaded successfully")
如果没报错,恭喜你,环境搭好了。
小技巧:第一次加载模型时,Ultralytics会自动下载权重文件。如果你网络不好,可以手动下载后放到~/.cache/ultralytics/目录下。
1.6 本章知识体系
下面这张图,帮你理清第一章的核心脉络:
1.7 常见问题与避坑
最后,分享几个我遇到过的问题:
- OpenCV安装失败:试试用conda安装:
conda install -c conda-forge opencv - PyTorch GPU版本:如果你有NVIDIA显卡,装CUDA版PyTorch,推理速度快10倍不止
- 模型下载慢:设置代理,或者用迅雷下载后手动放置
曾经有一次:我在服务器上装OpenCV,忘了装libgl1-mesa-glx,结果cv2.imshow直接报错。如果你在无桌面环境的服务器上跑,记得装虚拟显示库:apt-get install libgl1-mesa-glx
好了,第一章就到这里。环境搭好,后面的事就顺了。