opencv多目标追踪容器
之前做过一个多目标追踪的项目,尝试了一下opencv提供的追踪容器,个人感觉效果一般。
# coding:utf-8
# @Time : 14/12/2018 17:07
# @Author : SuRui
import cv2
from functools import wraps
def GetFps(func):
@wraps(func)
def wrapper(*args):
timer = cv2.getTickCount()
boxes = func(*args)
fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer)
return boxes, fps
return wrapper
class MultipleTargetTracker:
def __init__(self):
self.multi_tracker = cv2.MultiTracker_create()
self._method_name = None
@property
def method_name(self):
return self._method_name
@method_name.setter
def method_name(self, method):
self._method_name = method
@property
def tracker_method(self):
"""
Choose one method from the follow list.
'BOOSTING', 'CSRT', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'MOSSE', 'GOTURN'
:param method_name:
:return:
"""
# (major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.')
tracker_types = ['BOOSTING', 'CSRT', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'MOSSE', 'GOTURN']
tracker_generator = [cv2.TrackerBoosting_create, cv2.TrackerCSRT_create, cv2.TrackerMIL_create,
cv2.TrackerKCF_create, cv2.TrackerTLD_create, cv2.TrackerMedianFlow_create,
cv2.TrackerMOSSE_create