예제 #1
0
def tracker_init():
    (major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.')
    tracker_types = ['BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
    tracker_type = tracker_types[2]

    if int(minor_ver) < 3:
        tracker = cv2.Tracker_create(tracker_type)
    else:
        if tracker_type == 'BOOSTING':
            tracker = cv2.TrackerBoosting_create()
        if tracker_type == 'MIL':
            tracker = cv2.TrackerMIL_create()
        if tracker_type == 'KCF':
            tracker = cv2.TrackerKCF_create()
        if tracker_type == 'TLD':
            tracker = cv2.TrackerTLD_create()
        if tracker_type == 'MEDIANFLOW':
            tracker = cv2.TrackerMedianFlow_create()
        if tracker_type == 'GOTURN':
            tracker = cv2.TrackerGOTURN_create()
    return tracker
예제 #2
0
def ask_for_tracker():
    print("select api")
    print("boosting -0: ")
    print("MIL-1: ")
    print("KCF-2: ")
    print("TLD-3: ")
    print("median flow-4: ")
    choice = int(input("Please select your tracker: "))

    if choice == 0:
        tracker = cv2.TrackerBoosting_create()
    if choice == 1:
        tracker = cv2.TrackerMIL_create()
    if choice == 2:
        tracker = cv2.TrackerKCF_create()
    if choice == 3:
        tracker = cv2.TrackerTLD_create()
    if choice == 4:
        tracker = cv2.TrackerMedianFlow_create()

    return tracker
예제 #3
0
 def _get_tracker(self, name):
     tracker = None
     if name == 'Boosting':
         tracker = cv.TrackerBoosting_create()
     elif name == 'MIL':
         tracker = cv.TrackerMIL_create()
     elif name == 'KCF':
         tracker = cv.TrackerKCF_create()
     elif name == 'TLD':
         tracker = cv.TrackerTLD_create()
     elif name == 'MedianFlow':
         tracker = cv.TrackerMedianFlow_create()
     elif name == 'GOTURN':
         tracker = cv.TrackerGOTURN_create()
     elif name == 'MOSSE':
         tracker = cv.TrackerMOSSE_create()
     elif name == 'CSRT':
         tracker = cv.TrackerCSRT_create()
     else:
         raise RuntimeError('Unrecognized tracker type: {}'.format(name))
     return tracker
예제 #4
0
def ask_for_tracker():
    print("Welcome! What Tracker API would you like to use?")
    print("Enter 0 for BOOSTING: ")
    print("Enter 1 for MIL: ")
    print("Enter 2 for KCF: ")
    print("Enter 3 for TLD: ")
    print("Enter 4 for MEDIANFLOW: ")
    choice = input("Please select your tracker: ")

    if choice == '0':
        tracker = cv2.TrackerBoosting_create()
    if choice == '1':
        tracker = cv2.TrackerMIL_create()
    if choice == '2':
        tracker = cv2.TrackerKCF_create()
    if choice == '3':
        tracker = cv2.TrackerTLD_create()
    if choice == '4':
        tracker = cv2.TrackerMedianFlow_create()

    return tracker
예제 #5
0
 def make_tracker(self):
     tracker_type = "KCF"
     if tracker_type == 'BOOSTING':
         tracker = cv2.TrackerBoosting_create()
     if tracker_type == 'MIL':
         tracker = cv2.TrackerMIL_create()
     if tracker_type == 'KCF':
         tracker = cv2.TrackerKCF_create()
     if tracker_type == 'TLD':
         tracker = cv2.TrackerTLD_create()
     if tracker_type == 'MEDIANFLOW':
         tracker = cv2.TrackerMedianFlow_create()
     if tracker_type == 'GOTURN':
         tracker = cv2.TrackerGOTURN_create()
     if tracker_type == 'MOSSE':
         tracker = cv2.TrackerMOSSE_create()
     if tracker_type == "CSRT":
         tracker = cv2.TrackerCSRT_create()
     # bbox = cv2.selectROI(self.rawframe, self.targetbounds)
     tracker.init(self.rawframe, self.targetbounds)
     return tracker
예제 #6
0
def tracker__init(tracker_type):
    tracker = None

    if tracker_type == 'BOOSTING':
        tracker = cv2.TrackerBoosting_create()
    if tracker_type == 'MIL':
        tracker = cv2.TrackerMIL_create()
    if tracker_type == 'KCF':
        tracker = cv2.TrackerKCF_create()
    if tracker_type == 'TLD':
        tracker = cv2.TrackerTLD_create()
    if tracker_type == 'MEDIANFLOW':
        tracker = cv2.TrackerMedianFlow_create()
    if tracker_type == 'GOTURN':
        tracker = cv2.TrackerGOTURN_create()
    if tracker_type == 'MOSSE':
        tracker = cv2.TrackerMOSSE_create()
    if tracker_type == "CSRT":
        tracker = cv2.TrackerCSRT_create()

    return tracker
예제 #7
0
def select_tracker():
    print("Which Tracker API do you use?")
    print("0: Boosting")
    print("1: MIL")
    print("2: KCF")
    print("3: TLD")
    print("4: MedianFlow")
    choice = input("Please select your tracker number: ")

    if choice == '0':
        tracker = cv2.TrackerBoosting_create()
    if choice == '1':
        tracker = cv2.TrackerMIL_create()
    if choice == '2':
        tracker = cv2.TrackerKCF_create()
    if choice == '3':
        tracker = cv2.TrackerTLD_create()
    if choice == '4':
        tracker = cv2.TrackerMedianFlow_create()

    return tracker
예제 #8
0
    def track(self, rgbFrame, startX, startY, endX, endY):

        if self.tracker_type == 'BOOSTING':
            tracker = cv2.TrackerBoosting_create()
        if self.tracker_type == 'MIL':
            tracker = cv2.TrackerMIL_create()
        if self.tracker_type == 'KCF':
            tracker = cv2.TrackerKCF_create()
        if tracker_type == 'TLD':
            tracker = cv2.TrackerTLD_create()
        if self.tracker_type == 'MEDIANFLOW':
            tracker = cv2.TrackerMedianFlow_create()
        if self.tracker_type == 'GOTURN':
            tracker = cv2.TrackerGOTURN_create()
        if self.tracker_type == 'MOSSE':
            tracker = cv2.TrackerMOSSE_create()
        if self.tracker_type == "CSRT":
            tracker = cv2.TrackerCSRT_create()

        rect = (startX, startY, endX, endY)
        return self.multiTracker.add(tracker, rgbFrame, rect)
예제 #9
0
 def creatTracker():
     if int(minor_ver) < 3:
         tracker = cv2.Tracker_create(tracker_type)
     else:
         if tracker_type == 'BOOSTING':
             tracker = cv2.TrackerBoosting_create()
         if tracker_type == 'MIL':
             tracker = cv2.TrackerMIL_create()
         if tracker_type == 'KCF':
             tracker = cv2.TrackerKCF_create()
         if tracker_type == 'TLD':
             tracker = cv2.TrackerTLD_create()
         if tracker_type == 'MEDIANFLOW':
             tracker = cv2.TrackerMedianFlow_create()
         if tracker_type == 'GOTURN':
             tracker = cv2.TrackerGOTURN_create()
         if tracker_type == 'MOSSE':
             tracker = cv2.TrackerMOSSE_create()
         if tracker_type == "CSRT":
             tracker = cv2.TrackerCSRT_create()
     return tracker
예제 #10
0
    def _create_tracker(tracker_algorithm):
        # python3 -m pip install opencv-contrib-python
        if tracker_algorithm == "KCF":
            return cv2.TrackerKCF_create(
            )  # fps:17  - Default  / dim düşünce performansı arttı, başarım iyi
        if tracker_algorithm == "CSRT":
            return cv2.TrackerCSRT_create(
            )  # fps:4   - Başarısı daha iyi ama yavaş
        if tracker_algorithm == "MOSSE":
            return cv2.TrackerMOSSE_create(
            )  # fps:150 - Başarı düşük ama çok hızlı  / dim yükselince performansı biraz düştü ama başarı artmadı

        if tracker_algorithm == "MedianFlow":
            return cv2.TrackerMedianFlow_create()  # fps:15
        if tracker_algorithm == "Boosting":
            return cv2.TrackerBoosting_create()  # fps:4
        if tracker_algorithm == "MIL": return cv2.TrackerMIL_create()  # fps:2
        if tracker_algorithm == "TLD": return cv2.TrackerTLD_create()  # fps:1
        if tracker_algorithm == "GOTURN": cv2.TrackerGOTURN_create()  # fps:3

        raise Exception("Bad tracker_algorithm: {}".format(tracker_algorithm))
예제 #11
0
def create_tracker(frame, bbox):

    # bleh, write better code: tracker_type global

    if tracker_type == 'BOOSTING':
        tracker = cv2.TrackerBoosting_create()
    if tracker_type == 'MIL':
        tracker = cv2.TrackerMIL_create()
    if tracker_type == 'KCF':
        tracker = cv2.TrackerKCF_create()
    if tracker_type == 'TLD':
        tracker = cv2.TrackerTLD_create()
    if tracker_type == 'MEDIANFLOW':
        tracker = cv2.TrackerMedianFlow_create()
    if tracker_type == 'GOTURN':
        tracker = cv2.TrackerGOTURN_create()

    ok = tracker.init(frame, bbox)
    updates[tracker] = 0
    untracked_cycles[tracker] = 0
    return tracker
예제 #12
0
def tracker_name(tracker_type):
    if tracker_type == tracker_type[0]:
        tracker = cv2.TrackerBoosting_create()
    elif tracker_type == tracker_type[1]:
        tracker = cv2.TrackerMIL_create()
    elif tracker_type == tracker_type[2]:
        tracker = cv2.TrackerKCF_create()
    elif tracker_type == tracker_type[3]:
        tracker = cv2.TrackerTLD_create()
    elif tracker_type == tracker_type[4]:
        tracker = cv2.TrackerMedianFlow_create()
    elif tracker_type == tracker_type[5]:
        tracker = cv2.TrackerGOTURN_create()
    elif tracker_type == tracker_type[6]:
        tracker = cv2.TrackerMOSSE_create()
    elif tracker_type == tracker_type[7]:
        tracker = cv2.TrackerCSRT_create()
    else:
        tracker = None
        print('No Tracker Found')
    return tracker
예제 #13
0
def setup_tracker(ttype):
    tracker_types = ['BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
    tracker_type = tracker_types[ttype]

    if int(minor_ver) < 3:
        tracker = cv2.Tracker_create(tracker_type)
    else:
        if tracker_type == 'BOOSTING':
            tracker = cv2.TrackerBoosting_create()
        if tracker_type == 'MIL':
            tracker = cv2.TrackerMIL_create()
        if tracker_type == 'KCF':
            tracker = cv2.TrackerKCF_create()
        if tracker_type == 'TLD':
            tracker = cv2.TrackerTLD_create()
        if tracker_type == 'MEDIANFLOW':
            tracker = cv2.TrackerMedianFlow_create()
        if tracker_type == 'GOTURN':
            tracker = cv2.TrackerGOTURN_create()

    return tracker
예제 #14
0
    def create_tracker(self, frame, bbox):

        # TODO: write better code: tracker_type is currently global
        if self.tracker_type == 'BOOSTING':
            tracker = cv2.TrackerBoosting_create()
        if self.tracker_type == 'MIL':
            tracker = cv2.TrackerMIL_create()
        if self.tracker_type == 'KCF':
            tracker = cv2.TrackerKCF_create()
        if self.tracker_type == 'TLD':
            tracker = cv2.TrackerTLD_create()
        if self.tracker_type == 'MEDIANFLOW':
            tracker = cv2.TrackerMedianFlow_create()
        if self.tracker_type == 'GOTURN':
            tracker = cv2.TrackerGOTURN_create()

        ok = tracker.init(frame, bbox)
        self.updates[tracker] = 0
        self.untracked_cycles[tracker] = 0

        return tracker
예제 #15
0
def main():

    camera_ = 0

    c = connectpyCapture(camera_)

    a_bgr, gr = readpyFrame(c)

    centers, autoROI, th = circlesROI_AUTO(gr)

    tracker = cv2.TrackerBoosting_create()

    #    c = connectROI(camera_, autoROI)
    #
    #    a_bgr, gr = readROIFrame(c)

    # Tracking initialization passing the 1st frame and the selected ROI

    ok = tracker.init(a_bgr, autoROI)

    tip = [(0, 0)]

    while True:

        autoROI = boostUpdate_AUTO(c, tracker, ok, a_bgr, autoROI, centers, gr,
                                   th, tip)

        if cv2.waitKey(20) & 0xFF == ord('q'):

            break

    c.stopCapture()

    c.disconnect()

    cv2.destroyAllWindows()

    # Save tip coordinates in a text file for future uses

    np.savetxt('tipinROI_camera2.txt', tip)
예제 #16
0
    def __init__(self, tracker_name, configure_info=''):
        super(OCVTracker, self).__init__(tracker_name, configure_info)
        tracker_name = tracker_name.upper()
        assert tracker_name in ocv_tracker_types

        if tracker_name == 'BOOSTING':
            tracker = cv2.TrackerBoosting_create()
        elif tracker_name == 'MIL':
            tracker = cv2.TrackerMIL_create()
        elif tracker_name == 'KCF':
            tracker = cv2.TrackerKCF_create()
        elif tracker_name == 'TLD':
            tracker = cv2.TrackerTLD_create()
        elif tracker_name == 'MEDIANFLOW':
            tracker = cv2.TrackerMedianFlow_create()
        elif tracker_name == 'GOTURN':
            tracker = cv2.TrackerGOTURN_create()
        else:
            print("Wrong tracker name for opencv")
            exit()

        self.tracker = tracker
예제 #17
0
    def single_tracker(self, tracker_type):
        global tracker
        if tracker_type == 'BOOSTING':
            tracker = cv2.TrackerBoosting_create()
        if tracker_type == 'MIL':
            tracker = cv2.TrackerMIL_create()
        if tracker_type == 'KCF':
            tracker = cv2.TrackerKCF_create()
        if tracker_type == 'TLD':
            tracker = cv2.TrackerTLD_create()
        if tracker_type == 'MEDIANFLOW':
            tracker = cv2.TrackerMedianFlow_create()
        if tracker_type == 'GOTURN':
            tracker = cv2.TrackerGOTURN_create()
        if tracker_type == 'MOSSE':
            tracker = cv2.TrackerMOSSE_create()
        if tracker_type == 'CSRT':
            tracker = cv2.TrackerCSRT_create()
        else:
            tracker = None

        return tracker
예제 #18
0
def get_tracker():
    tracker_types = ['BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
    t_type = tracker_types[2]
    t = None

    if int(minor_ver) < 3:
        t = cv2.Tracker_create(t_type)
    else:
        if t_type == 'BOOSTING':
            t = cv2.TrackerBoosting_create()
        if t_type == 'MIL':
            t = cv2.TrackerMIL_create()
        if t_type == 'KCF':
            t = cv2.TrackerKCF_create()
        if t_type == 'TLD':
            t = cv2.TrackerTLD_create()
        if t_type == 'MEDIANFLOW':
            t = cv2.TrackerMedianFlow_create()
        if t_type == 'GOTURN':
            t = cv2.TrackerGOTURN_create()

    return t, t_type
예제 #19
0
def ask_for_tracker():
    print("select the API you want to use for the face detection...")
    print('Enter the 0 for the BOOSTING API')
    print('Enter the 1 for the MIL API')
    print('Enter the 2 for the KCF API')
    print('Enter the 3 for the TLD API')
    print('Enter the 4 for the MEDIANFLOW API')

    choice = input('please select the tracker you want: ')

    if choice == '0':
        tracker = cv2.TrackerBoosting_create()
    if choice == '1':
        tracker = cv2.TrackerMIL_create()
    if choice == '2':
        tracker = cv2.TrackerKCF_create()
    if choice == '3':
        tracker = cv2.TrackerTLD_create()
    if choice == '4':
        tracker = cv2.TrackerMedianFlow_create()

    return tracker
예제 #20
0
def create_tracker(tracker_type='CSRT'):

    global tracker

    if tracker_type == 'BOOSTING':
        tracker = cv2.TrackerBoosting_create()
    if tracker_type == 'MIL':
        tracker = cv2.TrackerMIL_create()
    if tracker_type == 'KCF':
        tracker = cv2.TrackerKCF_create()
    if tracker_type == 'TLD':
        tracker = cv2.TrackerTLD_create()
    if tracker_type == 'MEDIANFLOW':
        tracker = cv2.TrackerMedianFlow_create()
    if tracker_type == 'GOTURN':
        tracker = cv2.TrackerGOTURN_create()
    if tracker_type == 'MOSSE':
        tracker = cv2.TrackerMOSSE_create()
    if tracker_type == "CSRT":
        tracker = cv2.TrackerCSRT_create()

    return tracker
예제 #21
0
    def trackerCreator(TrackerName):
        ''' TrackerName - (str) ime tipa sledilnega algoritma '''

        tracker_type = TrackerName
        if tracker_type == 'BOOSTING':
            tracker = cv.TrackerBoosting_create()
        if tracker_type == 'MIL':
            tracker = cv.TrackerMIL_create()
        if tracker_type == 'KCF':
            tracker = cv.TrackerKCF_create()
        if tracker_type == 'TLD':
            tracker = cv.TrackerTLD_create()
        if tracker_type == 'MEDIANFLOW':
            tracker = cv.TrackerMedianFlow_create()
        if tracker_type == 'GOTURN':
            tracker = cv.TrackerGOTURN_create()
        if tracker_type == 'MOSSE':
            tracker = cv.TrackerMOSSE_create()
        if tracker_type == "CSRT":
            tracker = cv.TrackerCSRT_create()

        return tracker
예제 #22
0
 def __get_algorithm_tracker(self, algorithm):
     
     if algorithm == 'BOOSTING':
         tracker = cv2.TrackerBoosting_create()
     elif algorithm == 'MIL':  
         tracker = cv2.TrackerMIL_create()
     elif algorithm == 'KCF':  
         tracker = cv2.TrackerKCF_create()
     elif algorithm == 'TLD':  
         tracker = cv2.TrackerTLD_create()
     elif algorithm == 'MEDIANFLOW':
         tracker = cv2.TrackerMedianFlow_create()
     elif algorithm == 'GOTURN':
         tracker = cv2.TrackerGOTURN_create()
     elif algorithm == 'CSRT':                       
         tracker = cv2.TrackerCSRT_create()
     elif algorithm == 'MOSSE':                                                                                          
         tracker = cv2.TrackerMOSSE_create()
     else: 
         #default settings
         tracker = cv2.TrackerCSRT_create()
     return tracker
예제 #23
0
 def _setup_tracker(self):
     if int(minor_ver) < 3:
         tracker = cv.Tracker_create(tracker_type)
     else:
         if tracker_type == 'BOOSTING':
             tracker = cv.TrackerBoosting_create()
         if tracker_type == 'MIL':
             tracker = cv.TrackerMIL_create()
         if tracker_type == 'KCF':
             tracker = cv.TrackerKCF_create()
         if tracker_type == 'TLD':
             tracker = cv.TrackerTLD_create()
         if tracker_type == 'MEDIANFLOW':
             tracker = cv.TrackerMedianFlow_create()
         if tracker_type == 'GOTURN':
             tracker = cv.TrackerGOTURN_create()
         if tracker_type == 'MOSSE':
             tracker = cv.TrackerMOSSE_create()
         if tracker_type == "CSRT":
             tracker = cv.TrackerCSRT_create()
     self._tracker = tracker
     self._tracker_type = tracker_type
예제 #24
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')
     return tracker
def createTrackerByName(tracker_type):

    if tracker_type == 'BOOSTING':
        tracker = cv2.TrackerBoosting_create()
    elif tracker_type == 'MIL':
        tracker = cv2.TrackerMIL_create()
    elif tracker_type == 'KCF':
        tracker = cv2.TrackerKCF_create()
    elif tracker_type == 'TLD':
        tracker = cv2.TrackerTLD_create()
    elif tracker_type == 'MEDIANFLOW':
        tracker = cv2.TrackerMedianFlow_create()
    elif tracker_type == 'GOTURN':
        tracker = cv2.TrackerGOTURN_create()
    elif tracker_type == 'MOSSE':
        tracker = cv2.TrackerMOSSE_create()
    elif tracker_type == "CSRT":
        tracker = cv2.TrackerCSRT_create()
    else:
        print("ERROR tracker no identificado se selecciona MOSSE")
        tracker = cv2.TrackerMOSSE_create()
    return tracker
    def __init__(self, trackertype
                 ):  # ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
        self.trackerOpenCV = None
        if trackertype == OpenCVTrackerType.BOOSTING:
            self.trackerOpenCV = cv2.TrackerBoosting_create()
        elif trackertype == OpenCVTrackerType.MIL:
            self.trackerOpenCV = cv2.TrackerMIL_create()
        elif trackertype == OpenCVTrackerType.KCF:
            self.trackerOpenCV = cv2.TrackerKCF_create()
        elif trackertype == OpenCVTrackerType.TLD:
            self.trackerOpenCV = cv2.TrackerTLD_create()
        elif trackertype == OpenCVTrackerType.MEDIANFLOW:
            # self.trackerOpenCV = cv2.Tracker_create("MEDIANFLOW")
            self.trackerOpenCV = cv2.TrackerMedianFlow_create()
        elif trackertype == OpenCVTrackerType.GOTURN:
            self.trackerOpenCV = cv2.TrackerGOTURN_create()
        elif trackertype == OpenCVTrackerType.MOSSE:
            self.trackerOpenCV = cv2.TrackerMOSSE_create()

        self.success = False
        self.bbox = [0, 0, 0, 0]
        pass
예제 #27
0
        def create_tracker(type):
            if type == 'BOOSTING':
                tracker = cv2.TrackerBoosting_create()
            elif type == 'MIL':
                tracker = cv2.TrackerMIL_create()
            elif type == 'KCF':
                tracker = cv2.TrackerKCF_create()
            elif type == 'TLD':
                tracker = cv2.TrackerTLD_create()
            elif type == 'MEDIANFLOW':
                tracker = cv2.TrackerMedianFlow_create()
            elif type == 'GOTURN':
                tracker = cv2.TrackerGOTURN_create()
            elif type == 'MOSSE':
                tracker = cv2.TrackerMOSSE_create()
            elif type == "CSRT":
                tracker = cv2.TrackerCSRT_create()
            else:
                tracker = None
                print("Provide correct tracker name.")

            return tracker
def create_tracker():
    tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE', 'CSRT']
    #Normally use KCF, shouldn't use anything above that
    tracker_type = tracker_types[2]

    if tracker_type == 'BOOSTING':
        track = cv2.TrackerBoosting_create()
    if tracker_type == 'MIL':
        track = cv2.TrackerMIL_create()
    if tracker_type == 'KCF':
        track = cv2.TrackerKCF_create()
    if tracker_type == 'TLD':
        track = cv2.TrackerTLD_create()
    if tracker_type == 'MEDIANFLOW':
        track = cv2.TrackerMedianFlow_create()
    if tracker_type == 'GOTURN':
        track = cv2.TrackerGOTURN_create()
    if tracker_type == 'MOSSE':
        track = cv2.TrackerMOSSE_create()
    if tracker_type == "CSRT":
        track = cv2.TrackerCSRT_create()
    return track
예제 #29
0
def tracker(frames, init_bbox, tracker_type='KCF'):
    tracker_types = [
        'BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE',
        'CSRT'
    ]
    if tracker_type not in tracker_types:
        tracker_type = tracker_types[2]
    if tracker_type == 'BOOSTING':
        tracker = cv2.TrackerBoosting_create()
    if tracker_type == 'MIL':
        tracker = cv2.TrackerMIL_create()
    if tracker_type == 'KCF':
        tracker = cv2.TrackerKCF_create()
    if tracker_type == 'TLD':
        tracker = cv2.TrackerTLD_create()
    if tracker_type == 'MEDIANFLOW':
        tracker = cv2.TrackerMedianFlow_create()
    if tracker_type == 'GOTURN':
        tracker = cv2.TrackerGOTURN_create()
    if tracker_type == 'MOSSE':
        tracker = cv2.TrackerMOSSE_create()
    if tracker_type == "CSRT":
        tracker = cv2.TrackerCSRT_create()

    init_frame = frames[0]
    ok = tracker.init(init_frame, init_bbox)

    if not ok:
        print("Cannot initiate!")

    bboxes = list()
    for i, each_frame in enumerate(frames):
        if i == 0:
            bboxes.append(init_bbox)
        else:
            ok, bbox = tracker.update(each_frame)
            if ok:
                bboxes.append(bbox)
    return bboxes
예제 #30
0
def init_tracker(tracker_num):
    # tracker_types: ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE', 'CSRT']
    if tracker_num == 1:
        tracker = cv2.TrackerBoosting_create()
    elif tracker_num == 2:
        tracker = cv2.TrackerMIL_create()
    elif tracker_num == 3:
        tracker = cv2.TrackerKCF_create()
    elif tracker_num == 4:
        tracker = cv2.TrackerTLD_create()
    elif tracker_num == 5:
        tracker = cv2.TrackerMedianFlow_create()
    elif tracker_num == 6:
        tracker = cv2.TrackerGOTURN_create()
    elif tracker_num == 7:
        tracker = cv2.TrackerMOSSE_create()
    elif tracker_num == 8:
        tracker = cv2.TrackerCSRT_create()
    else:
        print("Invalid tracker number")
        exit()
    return tracker