示例#1
0
    def setup(self):
        self.dance_marker = 233511930
        self.state = 'breathing'
        self._seen_faces = deque([], 30)

        self.breathing = IdleBreathing(self.robot, 1.)
        self.breathing.start()
示例#2
0
    def setup(self):
        self.dance_marker = 233511930
        self.state = 'breathing'
        self._seen_faces = deque([], 30)

        self.breathing = IdleBreathing(self.robot, 1.)
        self.breathing.start()
示例#3
0
class DemoMode(LoopPrimitive):
    def setup(self):
        self.dance_marker = 233511930
        self.state = 'breathing'
        self._seen_faces = deque([], 30)

        self.breathing = IdleBreathing(self.robot, 1.)
        self.breathing.start()

    def update(self):
        self._seen_faces.append(len(self.robot.face_detector.faces) > 0)

        if self.state == 'breathing':
            marker = [m for m in self.robot.marker_detector.markers
                      if m.id == self.dance_marker]

            if marker:
                self.breathing.stop()

                self.state = 'dancing'
                self.robot.dance.start()

            if sum(self._seen_faces) > .75 * self._seen_faces.maxlen:
                self.state = 'tracking'
                self.breathing.stop()
                self.robot.face_tracking.start()

        elif self.state == 'dancing':
            if self.robot.dance.elapsed_time > 10:
                self.robot.dance.stop()

                self.state = 'breathing'
                self._seen_faces.clear()
                self.breathing.start()

        elif self.state == 'tracking':
            if sum(self._seen_faces) < .25 * self._seen_faces.maxlen:
                self.robot.face_tracking.stop()
                self._seen_faces.clear()

                self.state = 'breathing'
                self.breathing.start()

        img = self.robot.camera.frame
        for face in self.robot.face_detector.faces:
            face.draw(img)
        cv2.imshow('live', img)
        cv2.waitKey(10)

    def teardown(self):
        self.breathing.stop()
示例#4
0
class DemoMode(LoopPrimitive):
    def setup(self):
        self.dance_marker = 233511930
        self.state = 'breathing'
        self._seen_faces = deque([], 30)

        self.breathing = IdleBreathing(self.robot, 1.)
        self.breathing.start()

    def update(self):
        self._seen_faces.append(len(self.robot.face_detector.faces) > 0)

        if self.state == 'breathing':
            marker = [m for m in self.robot.marker_detector.markers
                      if m.id == self.dance_marker]

            if marker:
                self.breathing.stop()

                self.state = 'dancing'
                self.robot.dance.start()

            if sum(self._seen_faces) > .75 * self._seen_faces.maxlen:
                self.state = 'tracking'
                self.breathing.stop()
                self.robot.face_tracking.start()

        elif self.state == 'dancing':
            if self.robot.dance.elapsed_time > 10:
                self.robot.dance.stop()

                self.state = 'breathing'
                self._seen_faces.clear()
                self.breathing.start()

        elif self.state == 'tracking':
            if sum(self._seen_faces) < .25 * self._seen_faces.maxlen:
                self.robot.face_tracking.stop()
                self._seen_faces.clear()

                self.state = 'breathing'
                self.breathing.start()

        img = self.robot.camera.frame
        for face in self.robot.face_detector.faces:
            face.draw(img)
        cv2.imshow('live', img)
        cv2.waitKey(10)

    def teardown(self):
        self.breathing.stop()