正在进行视频分析任务,我需要捕获在给定视频中捕获同一车辆的次数。
到目前为止,使用 YOLO11 能够识别汽车、自行车、公共汽车和卡车等车辆。因此,当车辆出现在视频帧中时绘制矩形。
我不知道如何用识别码标记车辆。这样,当同一辆车出现在视频帧中时,我可以增加该车辆的数量。
添加我尝试过的代码
from ultralytics import YOLO
import cv2
from enum import Enum
class DetectionType(Enum):
CAR = 2
MOTORCYCLE = 3
BUS = 5
TRUCK = 6
coco_model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('testVideo.mp4')
vehicles = [
DetectionType.CAR.value,
DetectionType.MOTORCYCLE.value,
DetectionType.BUS.value,
DetectionType.TRUCK.value
]
ret = True
while ret:
ret, frame = cap.read()
if ret:
#detect vehicle
detections_model = coco_model(frame)[0]
for detection in detections_model.boxes.data.tolist():
x1, y1, x2, y2, score, class_id = detection
if int(class_id) in vehicles:
x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
cv2.rectangle(frame, (x1, y1), (x2, y2), (255, 0, 0), 2)
# Display frames in a window
cv2.imshow('video', frame)
if cv2.waitKey(33) == 27:
break
cap.release()
cv2.destroyAllWindows()
任何建议或片段都将帮助我完成这项作业。
使用 Yolo 跟踪器我能够解决我的解决方案。
在此处添加片段
替换这些行:
detections_model = coco_model(frame)[0]
对此:
detections_model = coco_model.track(frame, persist=True)
track_ids = detections_model[0].boxes.id.int().cpu().tolist()