确定同一辆车在所提供的视频中被捕获了多少次

问题描述 投票:0回答:1

正在进行视频分析任务,我需要捕获在给定视频中捕获同一车辆的次数。

到目前为止,使用 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()    

任何建议或片段都将帮助我完成这项作业。

python machine-learning computer-vision object-detection yolo
1个回答
0
投票

使用 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()
© www.soinside.com 2019 - 2024. All rights reserved.