python使用yolo模型检测视频
时间: 2025-06-15 07:26:14 浏览: 28
### 使用 Python 和 YOLO 实现视频对象检测
为了使用 Python 和 YOLO 模型进行视频对象检测,通常会采用如下方法:
#### 准备环境
安装必要的库和工具包对于项目至关重要。确保已安装 `opencv-python` 库用于处理视频流,并选择合适的框架来加载 YOLO 模型,比如 PyTorch 或者 Darknet 原生版本。
```bash
pip install opencv-python torch torchvision
```
#### 加载预训练模型
可以从官方资源获取预训练权重文件并下载对应的配置文件。如果选用的是基于 PyTorch 的实现,则可以直接通过 GitHub 仓库中的脚本完成这一过程[^1]。
#### 初始化网络结构
定义函数读取配置文件初始化神经网络架构,并加载之前准备好的权重参数。
```python
import cv2
from models import * # 导入YOLOv3的PyTorch实现模块
from utils.utils import *
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = Darknet('cfg/yolov3.cfg', img_size=(416, 416)).to(device)
if device == 'cuda':
model.load_darknet_weights('weights/yolov3.weights')
else:
weights = torch.load('weights/yolov3.pt')['model'].state_dict()
model.load_state_dict(weights)
```
#### 处理每一帧图像
编写循环遍历视频每一帧,在每一步执行预测操作并将结果可视化显示出来。这里需要注意将原始尺寸转换为目标大小以匹配输入需求。
```python
def detect_video(video_path='data/samples/video.mp4'):
cap = cv2.VideoCapture(video_path)
while True:
ret, frame = cap.read()
if not ret:
break
# 图像预处理
img = letterbox(frame)[0]
img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB & HWC to CHW
img = np.ascontiguousarray(img, dtype=np.float32) / 255.0
tensor_img = torch.from_numpy(img).unsqueeze(0).to(device)
with torch.no_grad():
pred = model(tensor_img)[0]
detections = non_max_suppression(pred, conf_thres=0.7, nms_thres=0.4)
draw_boxes(detections, frame)
cv2.imshow('Video Detection', frame)
key = cv2.waitKey(1)
if key == ord('q'): # 按下 q 键退出播放
break
cap.release()
cv2.destroyAllWindows()
detect_video()
```
上述代码片段展示了如何逐帧捕获视频内容并通过调用 `non_max_suppression()` 方法去除冗余框体从而获得最终检测结果;最后利用 OpenCV 将带有标注框的画面实时展示给用户观看[^2]。
阅读全文
相关推荐



















