def find(self): with self.lock: # Ensure tracker is not running. if self.thread is not None: return None # Reset. self.event.clear() self.found = False self.position = None self.center = None self.oculus = Oculus() # Locate the moving object. blob = None frame = None # Loop until capture. while blob is None and not self.event.is_set(): mask, frame = Theia.get_foreground(self.eye, 100, self.event) # Check early exit condition. if mask is not None: blob = Theia.bound_blobs(mask, 1) else: return None # Check early exit condition. if blob is None: return None # Blob exists. bb = blob[0] # Initialize tracker with bounding box. success = self.oculus.initialize(frame, bb) if not success: logger.error('Unable to initialize tracker. Stopping Theia.') return None else: if not self.start_track(frame): return None else: return bb
camera = Camera(0, 100, 100) eye = Eye(camera) oculus = Oculus() # agility.zero() while True: frame = eye.get_color_frame() cv2.imshow("preview", frame) k = cv2.waitKey(1) if not k == -1: break frame = eye.get_color_frame() tl, br = Theia.get_rect(frame) bb = (tl[0], tl[1], br[0] - tl[0], br[1] - tl[1]) oculus.initialize(frame, bb) while True: frame = eye.get_color_frame() found, pos, center = oculus.track(frame) if found: frame = cv2.rectangle( frame, (int(pos[0]), int(pos[1])), (int(pos[0] + pos[2]), int(pos[1] + pos[3])), (0, 255, 0), 3 ) # data = agility.look_at(center[0], center[1]) # executor.submit(agility.move_head, *data) else: