import cv2
from ultralytics import YOLO# 加载模型
model = YOLO('E:\\yolov\\yolov9\\runs\\detect\\train4\\weights\\best.pt') # 替换为您的模型路径# 读取视频文件
cap = cv2.VideoCapture('5.mp4') # 替换为您的视频文件路径# 定义输出视频的编码器和创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output_video.mp4', fourcc, 20.0, (640, 480)) # 替换为您的输出视频分辨率while cap.isOpened():ret, frame = cap.read()if not ret:print("无法读取视频帧,退出中...")break# 使用模型进行推理results = model(frame)# 遍历结果并在帧上绘制边界框for result in results:boxes = result.boxesfor box in boxes:# 获取边界框坐标x1, y1, x2, y2 = box.xyxy[0]x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)# 获取类别和置信度cls = box.cls[0]conf = box.conf[0]# 在帧上绘制边界框和标签cv2.rectangle(frame, (x1, y1), (x2, y2), (255, 0, 0), 2)cv2.putText(frame, f'{cls}: {conf:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)# 显示结果cv2.imshow('Video Detection', frame)# 将处理后的帧写入输出视频文件out.write(frame)# 按 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放视频捕获对象和销毁所有窗口
cap.release()
out.release()
cv2.destroyAllWindows()
