ubuntu yolov7使用摄像头检测
时间: 2025-02-09 19:56:48 浏览: 51
### 使用YOLOv7在Ubuntu上实现摄像头实时物体检测
#### 准备工作
为了能够在Ubuntu系统上使用YOLOv7进行摄像头实时物体检测,需先完成一系列准备工作。这包括但不限于安装必要的依赖库以及配置YOLOv7环境。
对于依赖项的准备,通常涉及Python及其相关包的安装,比如`opencv-python`用于视频流处理[^2]。另外,考虑到YOLO模型本身的需求,还需要安装PyTorch框架来支持YOLOv7的推理过程。
#### 安装YOLOv7及相关工具
获取YOLOv7源码可以通过克隆官方GitHub仓库来进行:
```bash
git clone https://github.com/WongKinYiu/yolov7.git
cd yolov7
```
接着按照项目文档中的指导安装所需的Python包:
```bash
pip install -r requirements.txt
```
#### 配置摄像头输入
针对USB摄像头的支持,在Linux环境下通常是通过V4L2接口实现的。如果计划使用的摄像头为`/dev/video1`,那么可以在启动检测程序前设置相应的参数以指定此设备作为视频源[^3]。
具体来说,当调用YOLOv7执行文件时,可通过命令行传递选项来更改默认摄像机路径。例如:
```python
from utils.general import check_img_size, non_max_suppression, scale_coords
from models.experimental import attempt_load
import torch
import cv2
weights = 'yolov7.pt' # 权重文件位置
imgsz = 640 # 输入图片尺寸
device = '' # 设备选择,默认为空字符串表示自动选择GPU/CPU
conf_thres = 0.25 # 置信度阈值
iou_thres = 0.45 # NMS IOU阈值
source = '/dev/video1'# USB摄像头节点地址
model = attempt_load(weights, map_location=device) # 加载预训练权重
stride = int(model.stride.max()) # 获取步幅大小
imgsz = check_img_size(imgsz, s=stride)
cap = cv2.VideoCapture(source)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
img = letterbox(frame, new_shape=imgsz)[0]
# 推理部分省略...
cv2.destroyAllWindows()
```
上述代码片段展示了如何读取来自特定USB摄像头的数据并将其送入YOLOv7网络中进行预测。注意这里的`source='/dev/video1'`指定了要打开的是第二个连接到系统的USB摄像头(假设第一个是`/dev/video0`)。实际应用过程中可能需要根据实际情况调整这个值。
#### 运行检测
最后一步就是运行整个流程,确保一切正常运作。可以利用如下命令启动基于选定摄像头的实时目标识别服务:
```bash
python detect.py --source /dev/video1 --weights yolov7.pt --view-img
```
这条指令会告诉YOLOv7加载名为`yolov7.pt`的权重文件,并尝试从给定的视频捕获设备读取帧数据,同时显示带有标注框的结果窗口。
阅读全文
相关推荐


















