1. 课程导学与环境搭建
各位同学,欢迎来到《OpenCV YOLO实时摄像头目标检测实战》的第一章。
我是你们这门课的主讲。做了十几年计算机视觉,从OpenCV 1.0时代一路摸爬滚打过来,踩过的坑比写过的代码还多。今天咱们不整虚的,直接聊点实在的——先把地基打牢。
1.1 OpenCV 到底是什么?
OpenCV,全称Open Source Computer Vision Library。说白了,就是一套开源的计算机视觉工具包。
我刚开始做视觉项目那会儿,图像处理全靠自己手写像素循环。一个高斯模糊就要折腾半天。后来遇到OpenCV,感觉就像从骑自行车直接换成了开跑车。它封装了2500多个算法,从图像读取、滤波、特征提取,到相机标定、深度学习推理,几乎覆盖了你能想到的所有视觉任务。
你想想看,一个实时摄像头检测系统,每秒要处理30帧图像。每帧图像都要经过预处理、缩放、推理、后处理。如果没有OpenCV这种高度优化的库,光图像解码就能把CPU撑爆。
1.2 YOLO 发展史:从 v1 到 v8
YOLO(You Only Look Once)是目标检测领域的一个里程碑。它把检测问题变成了回归问题——只看一眼,就能知道图像里有什么、在哪里。
| 版本 | 发布时间 | 核心特点 | 我的评价 |
|---|---|---|---|
| YOLOv1 | 2016 | 开创性工作,端到端检测 | 想法惊艳,但精度一般 |
| YOLOv2 | 2017 | 引入Anchor Box、Batch Normalization | 更稳定了,我开始在项目里用 |
| YOLOv3 | 2018 | 多尺度预测、Darknet-53骨干 | 工业级可用,我当年主力模型 |
| YOLOv4 | 2020 | CSPDarknet、Mish激活、Bag-of-Freebies | 速度和精度的黄金平衡点 |
| YOLOv5 | 2020 | PyTorch实现、更易用 | 社区最活跃,教程最多 |
| YOLOv8 | 2023 | Ultralytics出品、Anchor-Free、多任务统一框架 | 目前最推荐的生产版本 |
为什么选YOLOv8?我个人习惯用新不用旧。v8在架构上做了很多优化:去掉了Anchor机制,让模型更简洁;支持分类、检测、分割、姿态估计多任务;而且Ultralytics的API设计得非常友好,几行代码就能跑起来。
1.3 课程目标:你能学到什么?
这门课不是纯理论课。我的目标是:学完30章,你能独立搭建一套实时摄像头目标检测系统。
- 环境搭建: 从零配置Anaconda、CUDA、OpenCV、YOLOv8
- OpenCV核心操作: 图像读写、摄像头调用、图像预处理、绘制检测框
- YOLOv8实战: 模型加载、推理、后处理、性能优化
- 实时系统: 多线程处理、FPS优化、视频流处理
- 项目实战: 行人检测、车辆计数、安全帽识别等真实场景
1.4 环境搭建:一步一步来
这部分是很多同学的噩梦。我见过太多人在环境配置上卡了一周。别急,跟着我的步骤来,保证一次搞定。
1.4.1 Anaconda 与 Python 环境配置
Anaconda 是 Python 的发行版,自带包管理器和虚拟环境功能。为什么要用虚拟环境?因为不同项目可能依赖不同版本的库,混在一起会出大问题。
# 1. 下载Anaconda(推荐Python 3.10+版本)
# 官网:https://www.anaconda.com/download
# 2. 创建虚拟环境
conda create -n yolo_env python=3.10
# 3. 激活环境
conda activate yolo_env
# 4. 验证Python版本
python --version
# 输出应为:Python 3.10.x
1.4.2 CUDA 与 cuDNN 安装
CUDA是NVIDIA的并行计算平台。没有它,你的GPU就是摆设。cuDNN是CUDA的深度学习加速库。
| 组件 | 推荐版本 | 下载地址 | 验证命令 |
|---|---|---|---|
| CUDA | 11.8 或 12.1 | NVIDIA官网 | nvcc --version |
| cuDNN | 8.9.x 对应CUDA版本 | NVIDIA开发者网站 | 检查cudnn_version.h |
# 验证CUDA是否安装成功
nvcc --version
# 输出应显示CUDA版本号
# 验证cuDNN(Linux)
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
# 验证cuDNN(Windows)
# 检查 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include\cudnn_version.h
1.4.3 OpenCV 库安装
OpenCV的安装方式有很多种。我推荐用pip安装,简单快捷。
# 安装OpenCV(包含contrib模块)
pip install opencv-contrib-python
# 验证安装
python -c "import cv2; print(cv2.__version__)"
# 输出应为:4.8.x 或 4.9.x
1.4.4 YOLOv8 模型下载
YOLOv8 由 Ultralytics 团队维护。安装 ultralytics 包后,模型会自动下载。
# 安装Ultralytics
pip install ultralytics
# 下载YOLOv8模型(首次运行会自动下载)
from ultralytics import YOLO
# 加载预训练模型
model = YOLO('yolov8n.pt') # n: nano, s: small, m: medium, l: large, x: xlarge
# 查看模型信息
print(model.info())
| 模型版本 | 参数量 | mAP | 推理速度(GPU) | 适用场景 |
|---|---|---|---|---|
| YOLOv8n | 3.2M | 37.3 | ~2ms | 边缘设备、实时性要求高 |
| YOLOv8s | 11.2M | 44.9 | ~3ms | 通用场景 |
| YOLOv8m | 25.9M | 50.2 | ~5ms | 精度优先 |
| YOLOv8l | 43.7M | 52.9 | ~8ms | 高精度场景 |
| YOLOv8x | 68.2M | 53.9 | ~12ms | 极致精度 |
1.5 本章知识体系
下面这张图帮你理清本章的知识结构。环境搭建就像盖房子的地基,每一层都依赖下一层。
1.6 验证环境:跑通第一个检测程序
环境搭好了,我们来验证一下。写一个最简单的程序,用YOLOv8检测一张图片。
import cv2
from ultralytics import YOLO
# 加载模型
model = YOLO('yolov8n.pt')
# 读取图片
img = cv2.imread('test.jpg')
# 执行检测
results = model(img)
# 绘制结果
annotated_img = results[0].plot()
# 显示结果
cv2.imshow('YOLOv8 Detection', annotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
嗯,到这里第一章就结束了。环境搭建是枯燥的,但也是最关键的。我见过太多人因为环境问题放弃了整个课程。别做那个半途而废的人。把基础打牢,后面的实战部分会非常过瘾。