Exemple #1
0
    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
Exemple #2
0
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: