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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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, ())
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()
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
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()
def init_tld_tracker(self) -> _Tracker: """ Initialize TLD (Tracking, learning and detection) tracker instance Returns: ---------------------------- _Tracekr - tracker_instance """ return cv2.TrackerTLD_create()