Exemplo n.º 1
0
 def create_tracker(self):
     # 跟踪器类型
     trackerTypes = [
         "BOOSTING", "MIL", "KCF", "TLD", "MEDIANFLOW", "GOTURN", "MOSSE",
         "CSRT"
     ]
     if self.tracker_type == trackerTypes[0]:
         tracker = cv2.TrackerBoosting_create()
     elif self.tracker_type == trackerTypes[1]:
         tracker = cv2.TrackerMIL_create()
     elif self.tracker_type == trackerTypes[2]:
         tracker = cv2.TrackerKCF_create()
     elif self.tracker_type == trackerTypes[3]:
         tracker = cv2.TrackerTLD_create()
     elif self.tracker_type == trackerTypes[4]:
         tracker = cv2.TrackerMedianFlow_create()
     elif self.tracker_type == trackerTypes[5]:
         tracker = cv2.TrackerGOTURN_create()
     elif self.tracker_type == trackerTypes[6]:
         tracker = cv2.TrackerMOSSE_create()
     elif self.tracker_type == trackerTypes[7]:
         tracker = cv2.TrackerCSRT_create()
     else:
         tracker = None
     return tracker
Exemplo n.º 2
0
def createTrackerByName(trackerType):
  # Create a tracker based on tracker name
  if trackerType == trackerTypes[0]:
    tracker = cv2.TrackerBoosting_create()
  elif trackerType == trackerTypes[1]: 
    tracker = cv2.TrackerMIL_create()
  elif trackerType == trackerTypes[2]:
    tracker = cv2.TrackerKCF_create()
  elif trackerType == trackerTypes[3]:
    tracker = cv2.TrackerTLD_create()
  elif trackerType == trackerTypes[4]:
    tracker = cv2.TrackerMedianFlow_create()
  elif trackerType == trackerTypes[5]:
    tracker = cv2.TrackerGOTURN_create()
  elif trackerType == trackerTypes[6]:
    tracker = cv2.TrackerMOSSE_create()
  elif trackerType == trackerTypes[7]:
    tracker = cv2.TrackerCSRT_create()
  else:
    tracker = None
    print('Incorrect tracker name')
    print('Available trackers are:')
    for t in trackerTypes:
      print(t)
     
  return tracker
Exemplo n.º 3
0
    def __init__(self, frame, pos, feature_size, *args, **kwargs):
        self.pos = tuple(pos)
        self.lastpos = None
        self.poshist = []
        self.isActive = True
        self.featureSize = feature_size
        # define a bounding box centered at pos
        self.featureBB = (pos[0] - self.featureSize, pos[1] - self.featureSize, 2*self.featureSize, 2*self.featureSize)
        self.stationaryFrames = 0
        self.tracker = cv2.TrackerMOSSE_create()
        self.maxLife = 10000
        for key in kwargs:
            if key == "tracker":
                if kwargs[key] == "MFlow":
                    self.tracker = cv2.TrackerMedianFlow_create()
                elif kwargs[key] == "MOSSE":
                    self.tracker = cv2.TrackerMOSSE_create()
                elif kwargs[key] == "KCF":
                    self.tracker = cv2.TrackerKCF_create()
                elif kwargs[key] == "CSRT":
                    self.tracker = cv2.TrackerCSRT_create()
            if key == "maxLife":
                self.maxLife = kwargs[key]

        self.tracker.init(frame, self.featureBB)
Exemplo n.º 4
0
from cv2 import cv2
import numpy as np

cap = cv2.VideoCapture(0)

tracker = cv2.TrackerCSRT_create()

for i in range(10):
    s, frame = cap.read()

bbox = cv2.selectROI("Video", frame, True)
tracker.init(frame, bbox)


def spiral_cw(A):
    out = []
    while (A.size):
        out.append(A[0])  # take first row
        A = A[1:].T[::-1]  # cut off first row and rotate counterclockwise
    return np.concatenate(out)


while True:
    s, frame = cap.read()
    success, bbox = tracker.update(frame)
    if success:
        x, y, w, h = bbox
        x, y, w, h = int(x), int(y), int(w), int(h)
        frame[y:y + h, x:x + w] = spiral_cw(frame[y:y + h, x:x + w])
        # cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,150), 2)
import csv
from datetime import datetime
from collections import OrderedDict

from cv2 import cv2
import matplotlib.pyplot as plt

VIDEO_NAME = None
TRACKER_TYPES = OrderedDict({
    'BOOSTING': cv2.TrackerBoosting_create(),
    'MIL': cv2.TrackerMIL_create(),
    'KCF': cv2.TrackerKCF_create(),
    'TLD': cv2.TrackerTLD_create(),
    'MEDIANFLOW': cv2.TrackerMedianFlow_create(),
    'MOSSE': cv2.TrackerMOSSE_create(),
    'CSRT': cv2.TrackerCSRT_create(),
})
POI_TYPES = {
    '0': "Central Point",
    '1': "Left-Top Point",
    '2': "Right-Top Point",
    '3': "Right-Bottom Point",
    '4': "Left-Bottom Point",
}
GRAPH_TYPES = {'0': "Vertical", '1': "Horizontal"}


class Tracker:
    """
    Tracker Selection
    """