1. 先搞清楚这个项目到底能做什么,以及你需要准备什么
如果你正在为计算机视觉相关的毕业设计、课程大作业或者个人项目寻找一个“能跑起来、有实际效果”的案例,那么基于 OpenCV 和 YOLOv5 的实时目标检测,大概率就是你需要的那个。它不是一个停留在理论或论文里的概念,而是一个从摄像头或视频流里抓取画面、识别出物体、并实时把框和标签画出来的完整流程。这个组合之所以经典,是因为它把成熟的图像处理库(OpenCV)和当下高效易用的目标检测模型(YOLOv5)结合在了一起,让你能快速搭建一个视觉感知系统的原型。
最核心的价值在于“实时”和“可落地”。你不需要从零开始写神经网络,也不用担心复杂的模型部署,YOLOv5 提供了预训练模型,OpenCV 负责处理视频流和图形绘制。对于本科生毕设、研究生课题前期验证,或者想入门深度学习的开发者来说,这个项目能让你在最短时间内看到“AI识别物体”的实际效果,建立完整的工程化认知——从环境搭建、代码运行、参数调整到结果可视化。
在动手之前,你需要明确几个关键点:第一,这主要是一个 应用和集成 项目,重点在于理解流程和调参,而不是发明新算法。第二,“实时”是有条件的,它取决于你的硬件(尤其是显卡)、输入视频的分辨率以及你选择的 YOLOv5 模型大小。第三,整个项目可以拆解为几个清晰的阶段:环境准备、模型获取、编写检测脚本、运行调试以及最后的优化和扩展。
2. 环境搭建:避开依赖冲突的坑,一次配好
环境是第一个拦路虎,很多人的项目卡在第一步就是因为环境冲突。我们的核心是 Python,搭配 PyTorch(用于运行 YOLOv5)和 OpenCV-Python。我建议使用 Anaconda 创建独立的虚拟环境,这是避免包版本冲突最有效的方法。
首先,创建一个新的 Conda 环境(这里以 Python 3.8 为例,这是一个兼容性较好的版本):
conda create -n yolo_opencv python=3.8
conda activate yolo_opencv
接下来安装核心依赖。 请注意安装顺序 ,先安装 PyTorch,因为它对 CUDA 和 cuDNN 有特定要求。前往 PyTorch 官网 根据你的 CUDA 版本(如果有 NVIDIA 显卡)或选择 CPU 版本获取安装命令。例如,对于 CUDA 11.3 的用户:
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
如果没有 GPU 或 CUDA,就安装 CPU 版本:
pip install torch torchvision torchaudio
然后安装 OpenCV,通常我们安装 opencv-python 这个包就足够了,它包含了主要模块:
pip install opencv-python
最后,我们需要 YOLOv5 的源代码和其依赖。最直接的方式是从 GitHub 克隆官方仓库:
git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
执行 requirements.txt 时会自动安装一系列依赖,包括 matplotlib , pandas , seaborn 等,其中也包含了 opencv-python 。如果你之前已经安装过,这里不会冲突。
注意 :很多人会遇到
ModuleNotFoundError: No module named ‘cv2‘或类似的错误。这通常有几个原因:1. 没在正确的 Conda 环境下安装;2. 包名错误(应该是opencv-python);3. 在 IDE(如 PyCharm)中未正确选择解释器。务必在激活的虚拟环境中执行安装命令,并在 IDE 中设置该环境的 Python 解释器。
环境验证:分别执行 python -c “import torch; print(torch.__version__)” 和 python -c “import cv2; print(cv2.__version__)” ,能正确输出版本号即表示成功。
3. 核心代码拆解:从单张图片到实时视频流
环境就绪后,我们进入核心环节。YOLOv5 官方仓库的 detect.py 脚本功能强大,但为了理解原理,我建议自己写一个简化的版本。我们从易到难,先处理单张图片,再处理视频文件,最后接入摄像头。
3.1 单张图片检测:理解基本流程
创建一个 detect_image.py 文件。第一步是加载模型。YOLOv5 提供了不同大小的预训练模型(如 yolov5s.pt , yolov5m.pt 等,‘s’最小最快,‘x’最大最准)。我们通常从 yolov5s.pt 开始,它会自动下载。
import torch
import cv2
from pathlib import Path
# 加载模型,设置模型为评估模式
model = torch.hub.load(‘ultralytics/yolov5‘, ‘yolov5s‘, pretrained=True)
model.eval()
</


9198

被折叠的 条评论
为什么被折叠?



