https://mydreamambitious.blog.csdn.net/article/details/125471084
https://mydreamambitious.blog.csdn.net/article/details/125392536
https://mydreamambitious.blog.csdn.net/article/details/125351256
#创建窗口
cv2.namedWindow(winname='track',flags=cv2.WINDOW_AUTOSIZE)
cv2.resizeWindow(winname='track',width=750,height=600)
#创建跟踪器
trackers=cv2.MultiTracker_create()
#使用的算法KCF
track_algorithm=cv2.TrackerKCF_create()
#按比例缩放图片的高宽
height,width,channel=frame.shape
#缩放因子
factor=500/width
height=int(factor*height)
frame=cv2.resize(src=frame,dsize=(500,height))
# 如果按下t,在要跟踪的物体上绘制矩形框
if key==ord('t'):
# selectRoi返回的是一个元组[min_x,min_y,w,h]
#shwoCrosshair:表示是否在矩形框上画十字;fromCenter:表示是否从矩形框的中心开始画
box=cv2.selectROI(windowName='track',img=frame,
showCrosshair=True,fromCenter=False)
#添加追踪器
trackers.add(track_algorithm,frame,box)
#更新追踪的结果
ret,boxes=trackers.update(frame)
endtime=time.time()
FPS=1/(endtime-startime)
if ret:
for box in boxes:
x,y,w,h=int(box[0]),int(box[1]),int(box[2]),int(box[3])
cv2.rectangle(img=frame,pt1=(x,y),pt2=(x+w,y+h),color=(0,255,0),thickness=2)
cv2.putText(img=frame, text='FPS: ' + str(int(FPS)), org=(20, height - 50),
fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=1.0
, color=(0, 255, 0), thickness=2)
cv2.imshow('track',frame)
key=cv2.waitKey(30)
目标跟踪演示