目标跟踪调用yolo和deepsort进行多目标的跟踪

目标跟踪调用yolo和deepsort进行多目标的跟踪

由于多目标跟踪的TBD范式是由检测和跟踪部分共同决定的,一般主流的TBD范式都是以YOLO作为检测器,跟踪部分调用诸如deepsort的跟踪器进行目标跟踪.Yolo检测器首先将图像中需要检测的物体“框起来”,获取每个物体的位置信息(x1,y1,x2,y2,scorce,class),后面继续调用deepsort跟踪器进行跟踪代码的实现。
关于调用检测yolo和跟踪sort,需要一个的接口文件,以下是简单的代码调用和实现

import os

import randm

import cv2
from ultralytics import YOLO

from tracker import tracker


video_path = os.path.join('.','data','people.mp4')

cap = cv2.VideoCapture(video_path)

ret, frame = cap.read()

model = YOLO("yolov8n.pt")

# 这里面调用跟踪的接口(进行类的初始化)
tracker = Tracker()

colors = [(random.randint(0,255),random.randint(0,255),random.randint(0,255), for j in range(10))]

while ret:
	# 将每一帧文件传输到模型中进行目标检测,获得检测的结果
	results = model(frame)
	# 迭代每一帧的结果(每一帧中,有多个不同的检测框)
	for result in results:
		detecions = []
		for r in result.boxes.data.tolist():
			x1,y1,x2,y2, score,class_id = r
			x1 = int(x1)
			y1 = int(y1)
			x2 = int(x2)
			y2 = int(y2)
			class_id  = int(class_id)
			detections.append([x1,y1,x2,y2, score,class_id])
		# 此处为跟踪最重要的函数update
		# 每次更新检测的结果
		tracker.update('frame',detections)
		# 每一个轨迹都是一个物体
		for track in tracker.tracks:
			bbox = track.bbox
			x1,y1,x2,y2 = bbox 
			# 每次跟踪得到的行人的id(唯一性)
			track_id = track.track_id 
			cv2.rectangle(frame,(x1,y1),(x2,y2),(colors[track_id % len(colors)]), 3)


	cv2.imshow('frame',frame)
	cv2.waitKey(25)
	ret, frame = cap.read()

cap.release()
cv2.destroyAllWindows()


  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值