1. 课程导学与环境搭建
各位同学,欢迎来到《OpenCV摄像头接入与YOLO实时检测实战》的第一章。
我是这门课的主讲。做了这么多年计算机视觉,我越来越觉得——摄像头 + YOLO 这个组合,是落地最快、效果最直观的 CV 方案之一。你想想看,一个 USB 摄像头,配上几行 Python 代码,就能让电脑“看见”世界。这事儿本身就挺酷的。
1.1 我们这门课要干什么?
说白了,课程目标就三个:
- 搞定摄像头 —— 用 OpenCV 打开电脑摄像头、USB 摄像头,甚至 RTSP 网络摄像头。
- 跑通 YOLO —— 加载预训练权重,对每一帧画面做实时目标检测。
- 把两者串起来 —— 做一个能用的实时检测系统,不是玩具,是能上手的工具。
我个人习惯把复杂的东西拆成小块。所以课程会从环境搭建开始,一步步带你走到最后的实时检测界面。嗯,别急,咱们先把地基打牢。
1.2 OpenCV 是什么?
OpenCV,全称 Open Source Computer Vision Library。开源、跨平台、C++/Python 都支持。我在项目中遇到过很多次,不管你是做人脸识别、运动检测还是车道线识别,OpenCV 几乎是绕不开的基础库。
它的核心能力:
- 图像读取、显示、保存
- 摄像头视频流捕获
- 图像预处理(缩放、滤波、颜色空间转换)
- 基础图像处理(边缘检测、形态学操作)
说白了,OpenCV 就是计算机视觉界的“瑞士军刀”。
1.3 YOLO 是什么?
YOLO,全称 You Only Look Once。这个名字很直白——你只看一次。它把目标检测当成一个回归问题,一次前向传播就能输出物体的位置和类别。
为什么选 YOLO?
- 快 —— 实时性极好,在 GPU 上能跑到 30 FPS 以上
- 准 —— 精度不输两阶段检测器
- 轻 —— 有 tiny 版本,树莓派都能跑
我记得第一次在笔记本上跑通 YOLOv3 的时候,看着摄像头里的自己实时被框出来,那种感觉……嗯,确实挺上头的。
1.4 本章知识结构
先给你一张图,把第一章的脉络看清楚:
1.5 Python 环境配置
我建议你直接用 Anaconda 来管理环境。为什么?因为项目多了你就知道,环境隔离能救你很多次。
具体步骤:
- 下载安装 Anaconda(Python 3.8+ 版本)
- 创建虚拟环境:
conda create -n cv_yolo python=3.9 - 激活环境:
conda activate cv_yolo
cv_yolo,这样几个月后回来还能一眼认出。
1.6 OpenCV 库安装
激活环境后,一行命令搞定:
pip install opencv-python
pip install opencv-contrib-python # 包含额外模块
安装完成后,验证一下:
python -c "import cv2; print(cv2.__version__)"
如果输出了版本号,比如 4.8.0,那就说明安装成功了。
conda install -c conda-forge opencv,兼容性更好。
1.7 YOLO 权重文件下载
YOLO 发展到现在有好几个版本。我们课程主要用两个:
| 版本 | 权重文件 | 大小 | 适用场景 |
|---|---|---|---|
| YOLOv3 | yolov3.weights | ~248 MB | 经典、稳定、兼容性好 |
| YOLOv8n | yolov8n.pt | ~6 MB | 轻量、速度快、精度不错 |
下载方式:
- YOLOv3 权重:从 YOLO 官网或 GitHub 官方仓库下载
- YOLOv8 权重:用 ultralytics 库自动下载
# YOLOv8 自动下载示例
from ultralytics import YOLO
model = YOLO('yolov8n.pt') # 首次运行会自动下载
weights/ 文件夹里,方便管理。
1.8 验证你的环境
最后,跑一个简单的测试脚本,确保所有东西都正常工作:
import cv2
print("OpenCV 版本:", cv2.__version__)
# 测试读取图片
img = cv2.imread("test.jpg")
if img is not None:
print("图片读取成功,尺寸:", img.shape)
else:
print("请准备一张 test.jpg 放在当前目录")
# 测试摄像头(如果有)
cap = cv2.VideoCapture(0)
if cap.isOpened():
print("摄像头打开成功")
cap.release()
else:
print("未检测到摄像头,后续章节会详细讲解")
嗯,到这里,第一章的环境搭建就完成了。你可能会觉得这些步骤有点琐碎,但相信我——环境搞好了,后面写代码会顺畅很多。我曾经因为 Python 版本不对,折腾了整整一个下午……所以,别跳过这一步。