Opencv目标追踪
©Fu Xianjun. All Rights Reserved.
#目标追踪算法介绍

#八种工具
该追踪系统采用相同的机器学习算法,并已在其诞生已有十多年时间。该追踪器运行速度较慢且表现欠佳,在性能上存在明显劣势;然而作为资深产品仍有必要提及其存在。(最低支持OpenCV 3.0.0)
2.MIL Tracker:比上一个追踪器更精确,但是失败率比较高。(最低支持OpenCV 3.0.0)
3.KCF Tracker:核心相关滤波器。(最低支持OpenCV 3.1.0)
4.CSRT Tracker:判别相关滤波器。(最低支持OpenCV 3.4.2)
MedianFlow Tracker:在报错方面表现出色,在快速运动或快速移动物体的情况下不再具有良好的跟踪效果。(最低支持OpenCV 3.0.0)
6.TLD Tracker:跟踪器非常容易误报(最低支持OpenCV 3.0.0)
7.MOSSE Tracker:其速度极快,在精度方面略逊于CSRT和KCF。若需追求速度性能,则建议选用该算法。(最低支持OpenCV 3.4.1)
8.GOTURN Tracker:目前在OpenCV领域中独树一帜的是基于深度学习的方法这一检测系统。该检测系统必须依赖额外的模型来运作(最低支持OpenCV 3.2.0)。
#创建追踪器方法对象
import cv2
import numpy as np
OPENCV_ OBJECT_ TRACKERS = {
csrt : cv2. TrackerCSRT _create,
"kcf" : cv2. TrackerKCF create,
"boosting" : cv2. TrackerBoosting_ _create,
”mil": cv2. TrackerMIL _create,
"tld": cv2. TrackerTLD create,
"medianflow": cv2. TrackerMedianFlow create,
mosse": cv2. TrackerMOSSE_ create
}
#实例化追踪器对象
#实例化的tracker
trackers=cv2.MultiTracker_create()
#视频基本处理方法
vs = cv2. VideoCapture("1os_ angeles. mp4" )
while True:
Get current frame
frames; read()
(True, data)
_, data = frames[1]
End of stream
if frame is None: break
Resize each frame
height, width = cv2.resize(frame, dim= (width, int(h * r)), interpolation=cv2.INTER_AREA)
#追踪结果与区域绘制
#追踪结果
(success, boxes) = trackers. update (frame)
#绘制区域
遍历每个box in boxes:
提取box的坐标和尺寸(x坐标、y坐标、宽度、高度)并将其转换为整数:
随后,在frame图像上绘制一个填充矩形:
左上角位置为(x, y),右下角位置为(x + width, y + height):
颜色设置为绿色(0, 255, 0),填充度为2:
最后显示该窗口:

#目标ROI
关键在于等待按键输入以确认捕捉范围并执行相关操作.
#创建一个新的追踪器
tracker=OPENCV_OBJECT_TRACKERS"crst"
trackers. add(tracker, frame, box)
#退出
elif key == 27:
break
#关闭视频
vs.release()
cv2.destroyAllWindows()

