Beispiel #1
0
    def createTrackerByName(self):
        trackerType = self.trackerType
        trackerTypes = [
            'BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'MOSSE', 'CSRT'
        ]
        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.TrackerMOSSE_create()
        elif trackerType == trackerTypes[6]:
            tracker = cv2.TrackerCSRT_create()
        else:
            # 这里应该主动抛出异常
            tracker = None
            print('Incorrect tracker name')
            print('Available trackers are:')
            for t in trackerTypes:
                print(t)

            raise NameError('trackers name error !')

        return tracker
Beispiel #2
0
    def initWorking(self, frame, box):
        if self.tracker_type == 'BOOSTING':
            self.tracker = cv2.TrackerBoosting_create()
        if self.tracker_type == 'MIL':
            self.tracker = cv2.TrackerMIL_create()
        if self.tracker_type == 'KCF':
            self.tracker = cv2.TrackerKCF_create()
        if self.tracker_type == 'TLD':
            self.tracker = cv2.TrackerTLD_create()
        if self.tracker_type == 'MEDIANFLOW':
            self.tracker = cv2.TrackerMedianFlow_create()
        if self.tracker_type == 'GOTURN':
            self.tracker = cv2.TrackerGOTURN_create()
        '''
        追踪器工作初始化
        frame:初始化追踪画面
        box:追踪的区域
        '''
        if not self.tracker:
            raise Exception("追踪器未初始化")
        status = self.tracker.init(frame, box)
        if not status:
            raise Exception("追踪器工作初始化失败")

        self.coord = box
        self.isWorking = True
        print("ROI: ", self.coord)
    def __init__(self):
        self.image_sub     = rospy.Subscriber("/usb_cam/image_raw/compressed", CompressedImage, self.callback, queue_size=20)
        self.image_sub_2   = rospy.Subscriber("/usb_cam/image_raw/compressed", CompressedImage, self.callback_2, queue_size=20)
        self.contronl_pub  = rospy.Publisher("cmd_topic", Int32, queue_size=1)
        
        self.bridge = CvBridge()
        self.check  = 1

        tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'MOSSE', 'CSRT']
        self.tracker_type = tracker_types[4]

        if self.tracker_type == 'BOOSTING':
            self.tracker = cv2.TrackerBoosting_create()
        if self.tracker_type == 'MIL':
            self.tracker = cv2.TrackerMIL_create()
        if self.tracker_type == 'KCF':
            self.tracker = cv2.TrackerKCF_create()
        if self.tracker_type == 'TLD':
            self.tracker = cv2.TrackerTLD_create()
        if self.tracker_type == 'MEDIANFLOW':
            self.tracker = cv2.TrackerMedianFlow_create()
        if self.tracker_type == "CSRT":
            self.tracker = cv2.TrackerCSRT_create()
        if self.tracker_type == "MOSSE":
            self.tracker = cv2.TrackerMOSSE_create()
def createTrackerByName(trackerType):
    # Create a tracker based on tracker name
    # https://docs.opencv.org/master/d0/d0a/classcv_1_1Tracker.html
    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()
        # https://docs.opencv.org/master/d2/da2/classcv_1_1TrackerCSRT.html
    else:
        tracker = None
        print('Incorrect tracker name')
        print('Available trackers are:')
        for t in trackerTypes:
            print(t)

    return tracker
Beispiel #5
0
def ask_tracker():
    print('Which tracker ? : ')
    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')
    print('Enter 5 for GOTURN')
    print('Enter 6 for MOSSE')
    print('Enter 7 for CSRT')

    choice = input('Select 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()
    if choice == '5':
        tracker = cv2.TrackerGOTURN_create()
    if choice == '6':
        tracker = cv2.TrackerMOSSE_create()
    if choice == '7':
        tracker = cv2.TrackerCSRT_create()

    return tracker
Beispiel #6
0
 def call_tracker_constructor(self, tracker_type):
     if tracker_type == 'DASIAMRPN':
         tracker = dasiamrpn()
     else:
         # -- TODO: remove this if I assume OpenCV version > 3.4.0
         if int(self.major_ver == 3) and int(self.minor_ver) < 3:
             #tracker = cv2.Tracker_create(tracker_type)
             pass
         # --
         else:
             try:
                 tracker = cv2.TrackerKCF_create()
             except AttributeError as error:
                 print(error)
                 print('\nMake sure that OpenCV contribute is installed: opencv-contrib-python\n')
             if tracker_type == 'CSRT':
                 tracker = cv2.TrackerCSRT_create()
             elif tracker_type == 'KCF':
                 tracker = cv2.TrackerKCF_create()
             elif tracker_type == 'MOSSE':
                 tracker = cv2.TrackerMOSSE_create()
             elif tracker_type == 'MIL':
                 tracker = cv2.TrackerMIL_create()
             elif tracker_type == 'BOOSTING':
                 tracker = cv2.TrackerBoosting_create()
             elif tracker_type == 'MEDIANFLOW':
                 tracker = cv2.TrackerMedianFlow_create()
             elif tracker_type == 'TLD':
                 tracker = cv2.TrackerTLD_create()
             elif tracker_type == 'GOTURN':
                 tracker = cv2.TrackerGOTURN_create()
     return tracker
def ask_for_tracker():
    print('Hi, ! What tracker API would you like to use?')
    print('Enter 0 for Boosting: ')
    print('Enter 1 for MIL: ')
    print('Enter 2 for KCF: ')
    print('print 3 for TLD: ')
    print('Enter 4 for MEDIANFLOW: ')
    print('Enter 5 for GOTURN: ')
    print('Enter 6 for MOSSE: ')
    print('Enter 7 for CSRT: ')

    choice = input('Please select your tracker: ')
    if choice == '0':
        trackerchoice = cv2.TrackerBoosting_create()
    if choice == '1':
        trackerchoice = cv2.TrackerMIL_create()
    if choice == '2':
        trackerchoice = cv2.TrackerKCF_create()
    if choice == '3':
        trackerchoice = cv2.TrackerTLD_create()
    if choice == '4':
        trackerchoice = cv2.TrackerMedianFlow_create()
    if choice == '5':
        trackerchoice = cv2.TrackerGOTURN_create()
    if choice == '6':
        trackerchoice = cv2.TrackerMOSSE_create()
    if choice == '7':
        trackerchoice = cv2.TrackerCSRT_create()

    return trackerchoice
Beispiel #8
0
def Tracker():
    print("Choose Tracker API:")
    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:')
    print('Enter 5 for GOTURN:')
    print('Enter 6 for MOSSE:')
    print('Enter 7 for CSRT:')

    choice = input('Select 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()
    if choice == '5':
        tracker = cv2.TrackerGOTURN_create()
    if choice == '6':
        tracker = cv2.TrackerMOSSE_create()
    if choice == '7':
        tracker = cv2.TrackerCSRT_create()

    return tracker
Beispiel #9
0
 def __init__(self, tracker_type="BOOSTING", draw_coord=True):
     '''
     初始化追踪器种类
     '''
     # 获得opencv版本
     (major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.')
     self.tracker_types = [
         'BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN'
     ]
     self.tracker_type = tracker_type
     self.isWorking = False
     self.draw_coord = draw_coord
     # 构造追踪器
     if int(major_ver) < 3:
         self.tracker = cv2.Tracker_create(tracker_type)
     else:
         if tracker_type == 'BOOSTING':
             self.tracker = cv2.TrackerBoosting_create()
         if tracker_type == 'MIL':
             self.tracker = cv2.TrackerMIL_create()
         if tracker_type == 'KCF':
             self.tracker = cv2.TrackerKCF_create()
         if tracker_type == 'TLD':
             self.tracker = cv2.TrackerTLD_create()
         if tracker_type == 'MEDIANFLOW':
             self.tracker = cv2.TrackerMedianFlow_create()
         if tracker_type == 'GOTURN':
             self.tracker = cv2.TrackerGOTURN_create()
def tracker_name(tracker_types):

	if tracker_type == tracker_types[0]:
		tracker = cv2.TrackerBoosting_create()
	elif tracker_type == tracker_types[1]:
		tracker = cv2.TrackerMIL_create()	
	elif tracker_type == tracker_types[2]:
		tracker = cv2.TrackerKCF_create()		
	elif tracker_type == tracker_types[3]:
		tracker = cv2.TrackerTLD_create()
	elif tracker_type == tracker_types[4]:
		tracker = cv2.TrackerMeidanFlow_create()
	elif tracker_type == tracker_types[5]:
		tracker = cv2.TrackerGOTURN_create()
	elif tracker_type == tracker_types[6]:
		tracker = cv2.TrackerMosse_create()
	elif tracker_type == tracker_types[7]:
		tracker = cv2.TrackerCSRT_create()

	else:
		tracker = None
		print('No Tracker Found')
		print('Choose from these trackers')
		for tr in tracker_types:
			print(ta)

	return tracker	
def selectTrackerForObj():
    
    print('Welcome in the Object Tracker API!!!')
    print('1.Boosting')
    print('2.TLD')
    print('3.MIL')
    print('4.KCF')
    print('5.Median Flow')
    
    choice = int(input('Enter the choice for the tracker:'))
    
    if choice == 1:
        tracker = cv2.TrackerBoosting_create()
    elif choice == 2:
        tracker = cv2.TrackerTLD_create()
    elif choice == 3:
        tracker = cv2.TrackerMIL_create()
    elif choice == 4:
        tracker = cv2.TrackerKCF_create()
    elif choice == 5:
        tracker = cv2.TrackerMedianFlow_create()
    else:
        print('Ooops!, You entered wrong chocie, Plz try again!!')
        
    return tracker
Beispiel #12
0
    def update_tracker(self, frame, mask=None, tracker_type=None, **kwargs):
        if tracker_type is None:
            tracker_type = self.tracker_type

        tk_name = tracker_type.upper()
        if int(cv_major_ver) < 3:
            tracker = cv2.Tracker_create(tk_name)
        elif tk_name == 'BOOSTING':
            tracker = cv2.TrackerBoosting_create()
        elif tk_name == 'MIL':
            tracker = cv2.TrackerMIL_create()
        elif tk_name == 'KCF':
            tracker = cv2.TrackerKCF_create()
        elif tk_name == 'TLD':
            tracker = cv2.TrackerTLD_create()
        elif tk_name == 'MEDIANFLOW':
            tracker = cv2.TrackerMedianFlow_create()
        elif tk_name == 'GOTURN':
            tracker = cv2.TrackerGOTURN_create()
        else:
            raise ValueError("tracker_type not supported")

        # add tail if tracker was created
        if kwargs:
            # renewing tracker and correct it
            tf = self.add_to_tail(mask=mask, frame=frame, **kwargs)
        else:
            # renewing tracker from last item in tail
            tf = self.tail[0]

        # register new tracker if tail was added successfully
        self.tracker_type = tracker_type
        self.tracker = tracker
        self.is_tracking = tracker.init(frame, tf.bbox)
def InitializingTLD(player, box, iniframe):
    player = cv2.TrackerTLD_create()
    box = (0, 0, 10, 10)
    box = cv2.selectROI(iniframe, False)
    ok = player.init(iniframe, box)
    cv2.destroyAllWindows()
    return player, box
Beispiel #14
0
    def createTrackerByName(self, trackerType):
        trackerTypes = [
            'BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE',
            'CSRT'
        ]

        # 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
Beispiel #15
0
    def select_tracker(self):
        """
        コンストラクタで用いるトラッカー初期化用のメソッド

        Returns:
            tracker obj:
               指定されたタイプのトラッカーインスタンス
        """
        tracker = None
        choice = "3"

        # 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
Beispiel #16
0
    def create_tracker_by_name(self, tracker_type):
        """
        Given input string, init the correct tracker
        :param tracker_type: e.g. 'CSRT'
        :return:
        """
        # Create a tracker based on tracker name
        if tracker_type == self.trackerTypes[0]:
            tracker = cv2.TrackerBoosting_create()
        elif tracker_type == self.trackerTypes[1]:
            tracker = cv2.TrackerMIL_create()
        elif tracker_type == self.trackerTypes[2]:
            tracker = cv2.TrackerKCF_create()
        elif tracker_type == self.trackerTypes[3]:
            tracker = cv2.TrackerTLD_create()
        elif tracker_type == self.trackerTypes[4]:
            tracker = cv2.TrackerMedianFlow_create()
        elif tracker_type == self.trackerTypes[5]:
            tracker = cv2.TrackerGOTURN_create()
        elif tracker_type == self.trackerTypes[6]:
            tracker = cv2.TrackerMOSSE_create()
        elif tracker_type == self.trackerTypes[7]:
            tracker = cv2.TrackerCSRT_create()
        else:
            tracker = None
            print('Incorrect tracker name')
            print('Available trackers are:')
            for t in self.trackerTypes:
                print(t)

        return tracker
Beispiel #17
0
    def fluo_predict(self, image, blank=None):
        if self.tracker is None:
            """
                make template 
            """
            if self.tracker_name == "BOOSTING":
                self.tracker = cv2.TrackerBoosting_create()
            elif self.tracker_name == "MIL":
                self.tracker = cv2.TrackerMIL_create()
            elif self.tracker_name == "KCF":
                self.tracker = cv2.TrackerKCF_create()
            elif self.tracker_name == "TLD":
                self.tracker = cv2.TrackerTLD_create()
            elif self.tracker_name == "MEDIANFLOW":
                self.tracker = cv2.TrackerMedianFlow_create()
            elif self.tracker_name == "MOSSE":
                self.tracker = cv2.TrackerMOSSE_create()
            elif self.tracker_name == "CSRT":
                self.tracker = cv2.TrackerCSRT_create()
            else:
                raise Exception("cannot create tracker: " + self.tracker_name)

            bbox = (int(self.x - self.radius), int(self.y - self.radius),
                    int(2 * self.radius), int(2 * self.radius))
            self.tracker.init(image, bbox)

        else:
            ok, bbox = self.tracker.update(image)
            if ok:
                self.x = bbox[0] + self.radius
                self.y = bbox[1] + self.radius
            else:
                return 0, 0, False

        return self.x, self.y, True
def create_tracker(tracker_type=1):
    tracker_types = [
        'BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'CSRT',
        'MOSSE'
    ]
    if tracker_type > len(tracker_types):
        tracker_type = 0
    tracker_type = tracker_types[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 == 'CSRT':
        tracker = cv2.TrackerCSRT_create()
    elif tracker_type == 'MOSSE':
        tracker = cv2.TrackerMOSSE_create()
    return tracker
Beispiel #19
0
def createTrackerByName(trackerType):
    # 트레커를 이름에 따라 생성합니다.
    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('틀린 트레커 이름입니다')
        print('현재 작동하는 트레커:')
        for t in trackerTypes:
            print(t)

    return tracker
Beispiel #20
0
    def __init__(self, raw_img, boundarybox, serieid, lipcenter, shotcount):
        if config.tracker_type == 'BOOSTING':
            self.tracker = cv2.TrackerBoosting_create()
        if config.tracker_type == 'MIL':
            self.tracker = cv2.TrackerMIL_create()
        if config.tracker_type == 'KCF':
            self.tracker = cv2.TrackerKCF_create()
        if config.tracker_type == 'TLD':
            self.tracker = cv2.TrackerTLD_create()
        if config.tracker_type == 'MEDIANFLOW':
            self.tracker = cv2.TrackerMedianFlow_create()
        if config.tracker_type == 'GOTURN':
            self.tracker = cv2.TrackerGOTURN_create()
        if config.tracker_type == 'MOSSE':
            self.tracker = cv2.TrackerMOSSE_create()

        self.tracker = cv2.TrackerMOSSE_create()
        self.bbox = (boundarybox[0], boundarybox[1],
                     boundarybox[2] - boundarybox[0],
                     boundarybox[3] - boundarybox[1])

        self.tracked = True
        self.serie_name = "series" + str(serieid)
        self.drop_count = 0
        self.valid = True
        self.startshot = shotcount
        self.endshot = None
        self.delta = (0, 0)
        # self.seqlist = []
        self.syncseq = []
        self.lastlipbox = None
        self.update_lip_seq(raw_img, boundarybox, lipcenter)
        self.tracker.init(raw_img, self.bbox)
        self.remove = False
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
Beispiel #22
0
    def __create_tracker_by_name(self):
        """Method to creating a tracker object via type that is chosen by the user.
        """
        if self.tracker_type == self.tracker_types[0]:
            tracker = cv2.TrackerBoosting_create()
        elif self.tracker_type == self.tracker_types[1]:
            tracker = cv2.TrackerMIL_create()
        elif self.tracker_type == self.tracker_types[2]:
            tracker = cv2.TrackerKCF_create()
        elif self.tracker_type == self.tracker_types[3]:
            tracker = cv2.TrackerTLD_create()
        elif self.tracker_type == self.tracker_types[4]:
            tracker = cv2.TrackerMedianFlow_create()
        elif self.tracker_type == self.tracker_types[5]:
            tracker = cv2.TrackerGOTURN_create()
        elif self.tracker_type == self.tracker_types[6]:
            tracker = cv2.TrackerMOSSE_create()
        elif self.tracker_type == self.tracker_types[7]:
            tracker = cv2.TrackerCSRT_create()
        else:
            tracker = None
            logger.error('Incorrect tracker name')
            logger.info('Available trackers are:')
            for t in self.tracker_types:
                logger.info(t)

        return tracker
Beispiel #23
0
def creat_tracker(tracker_type):
    """
    Create video tracker.
    
    Params:
        tracker_type: string of tracker name
    Return:
        tracker object
    """
    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() # OpenCV KCF is not good
            tracker = kcftracker.KCFTracker(
                False, True, False)  # hog, fixed_window, multiscale
        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
Beispiel #24
0
def traker_name(tracker):
    if tracker == tracker_types[0]:
        return cv2.TrackerBoosting_create()

    if tracker == tracker_types[1]:
        return cv2.TrackerMIL_create()

    if tracker == tracker_types[2]:
        return cv2.TrackerKCF_create()

    if tracker == tracker_types[3]:
        return cv2.TrackerTLD_create()

    if tracker == tracker_types[4]:
        return cv2.TrackerMedianFlow_create()

    if tracker == tracker_types[5]:
        return cv2.TrackerGOTURN_create()

    if tracker == tracker_types[6]:
        return cv2.TrackerMOSSE_create()

    if tracker == tracker_types[7]:
        return cv2.TrackerCSRT_create()

    else:
        raise NotImplementedError
Beispiel #25
0
    def __init__(self):
        tracker_types = ['BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
        tracker_type = tracker_types[4]

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

        # Read video
        self.video = cv2.VideoCapture('testvideo.mp4')

        # Exit if video not opened.
        if not self.video.isOpened():
            print("Could not open video")
            sys.exit()

        # Define an initial bounding box
        self.bbox = (287, 23, 86, 320)  # 横,纵,宽,高

        _thread.start_new_thread(self.track_thread, ())
Beispiel #26
0
    def __init__(self, videoFile):
        """
        Initializes the tracker with the video file path

        :param videoFile: the path to the video to analyze
        """
        self.current_frame = 0
        self.data_points = []
        self.videoFile = videoFile

        tracker_types = [
            'BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE',
            'CSRT'
        ]
        self.tracker_type = tracker_types[2]

        # here the tracker type in the above line is instantiated

        if self.tracker_type == 'BOOSTING':
            self.tracker = cv2.TrackerBoosting_create()
        elif self.tracker_type == 'MIL':
            self.tracker = cv2.TrackerMIL_create()
        elif self.tracker_type == 'KCF':
            self.tracker = cv2.TrackerKCF_create()
        elif self.tracker_type == 'TLD':
            self.tracker = cv2.TrackerTLD_create()
        elif self.tracker_type == 'MEDIANFLOW':
            self.tracker = cv2.TrackerMedianFlow_create()
        elif self.tracker_type == 'GOTURN':
            self.tracker = cv2.TrackerGOTURN_create()
        elif self.tracker_type == 'MOSSE':
            self.tracker = cv2.TrackerMOSSE_create()
        elif self.tracker_type == "CSRT":
            self.tracker = cv2.TrackerCSRT_create()
Beispiel #27
0
def create_tracker_by_type(tracker_type):
    # Create a tracker based on tracker name
    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()
        # Todo - not hardcoded and add checks
        fs_settings = cv2.FileStorage("./trackers/cfg/csrt_settings.yaml",
                                      cv2.FILE_STORAGE_READ)
        tracker.read(fs_settings.root())
    else:
        raise Exception(f"There is no tracker name: {tracker_type}")

    return tracker
Beispiel #28
0
    def run(self):
        global cycle
        if self.start == True:
            self.camera = PiCamera()
#             self.camera.resolution = (640, 480)
            self.camera.resolution = (640, 480)
            self.camera.framerate = 20
            self.camera.vflip = True
            self.rawCapture = PiRGBArray(self.camera, size=(640, 480))
            self.tracker = cv2.TrackerTLD_create()
            self.initBB = None
            time.sleep(1)
            self.start = None
        while self._running:
            for frame in self.camera.capture_continuous(self.rawCapture, format="bgr", use_video_port=True):
                # grab the raw NumPy array representing the image, then initialize the timestamp
                # and occupied/unoccupied text
                image = frame.array
                W  = 640   # float
                H = 480  # float
                
                if self.initBB is not None:
                    # grab the new bounding box coordinates of the object
                    (success, box) = self.tracker.update(image)

                    # check to see if the tracking was a success
                    if success:
                        (x, y, w, h) = [int(v) for v in box]
                        cv2.rectangle(image, (x, y), (x + w, y + h),
                            (0, 255, 0), 2)


                # show the output frame
            #     fps = cap.get(cv2.CAP_PROP_FPS)
            #     print('fps:', fps)  # float
                cv2.imshow("Frame", image)
                key = cv2.waitKey(1) & 0xFF
#                 print(time.time()-end)
#                 end = time.time()

                # if the 's' key is selected, we are going to "select" a bounding
                # box to track
                if key == ord("s"):
                    # select the bounding box of the object we want to track (make
                    # sure you press ENTER or SPACE after selecting the ROI)
                    self.initBB = cv2.selectROI("Frame", image, fromCenter=False,
                        showCrosshair=True)

                    # start OpenCV object tracker using the supplied bounding box
                    # coordinates, then start the FPS throughput estimator as well
                    self.tracker.init(image, self.initBB)

                # if the `q` key was pressed, break from the loop
                elif key == ord("q"):
                    break
                # show the frame

                # clear the stream in preparation for the next frame
                self.rawCapture.truncate(0)
def object_tracker(tracker_algo="MDF", video_path=""):
    if tracker_algo == "boosting":
        tracker = cv2.TrackerBoosting_create()
    if tracker_algo == "CSRT":
        tracker = cv2.TrackerCSRT_create()
    if tracker_algo == "TLD":
        tracker = cv2.TrackerTLD_create()
    if tracker_algo == "MIL":
        tracker = cv2.TrackerMIL_create()
    if tracker_algo == "KCF":
        tracker = cv2.TrackerKCF_create()
    if tracker_algo == "MDF":
        tracker = cv2.TrackerMedianFlow_create()

    time.sleep(1)
    cap = cv2.VideoCapture(0)
    ret, frame = cap.read()
    bbox = cv2.selectROI("Tracking", frame, False)
    tracker.init(frame, bbox)

    def drawBox(img, bbox):
        x, y, w, h = int(bbox[0]), int(bbox[1]), int(bbox[2]), int(bbox[3])
        cv2.rectangle(img, (x, y), ((x + w), (y + h)), (0, 255, 0), 3, 3)
        cv2.putText(img, "Tracking Started", (100, 75),
                    cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)

    while True:

        timer = cv2.getTickCount()
        success, img = cap.read()
        success, bbox = tracker.update(img)

        if success:
            drawBox(img, bbox)
        else:
            cv2.putText(img, "Lost", (100, 75), cv2.FONT_HERSHEY_SIMPLEX, 0.7,
                        (0, 0, 255), 2)

        cv2.rectangle(img, (15, 15), (200, 90), (255, 0, 255), 2)
        cv2.putText(img, "Fps:", (20, 40), cv2.FONT_HERSHEY_SIMPLEX, 0.7,
                    (255, 0, 255), 2)
        cv2.putText(img, "Status:", (20, 75), cv2.FONT_HERSHEY_SIMPLEX, 0.7,
                    (255, 0, 255), 2)

        fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer)
        if fps > 60: myColor = (20, 230, 20)
        elif fps > 20: myColor = (230, 20, 20)
        else: myColor = (20, 20, 230)
        cv2.putText(img, str(int(fps)), (75, 40), cv2.FONT_HERSHEY_SIMPLEX,
                    0.7, myColor, 2)

        cv2.imshow("Tracking", img)

        if cv2.waitKey(1) & 0xff == ord('q'):
            break

    cv2.destroyAllWindows()
    cap.release()
Beispiel #30
-1
 def init_tld_tracker(self) -> _Tracker:
     """
         Initialize TLD (Tracking, learning and detection) tracker instance
         Returns: 
         ----------------------------
         _Tracekr - tracker_instance
     """
     return cv2.TrackerTLD_create()