Example #1
0
    def run(self):

        # size of video
        hight = int(480 / 2)
        width = int(640 / 2)

        start_time = time.monotonic()
        #camera = picamera.PiCamera()
        vs = VideoStream(usePiCamera = True, resolution = (width, hight), framerate = 10).start()
        vs.shutter_speed = 70
        time.sleep(3.0)
        counter = 0
        doSecondRescale = True
        while 1:
            frame = vs.read()
            if self.eye_closed:
                if time.monotonic() - start_time >= self.cooldown_time:
                    # open eye after cooldown time
                    if self.eye_closed:
                        print("opening now")
                        servos.open()
                    self.eye_closed = False
                    continue #we want the next frame, this one was done with closed lense, no need processing it

            # comment next 2 lines if you do not wish for graphical output
            cv2.imshow("video", frame)
            cv2.waitKey(1)
            counter += 1
            print(counter)
            if counter % self.every == 0:
                if self.eye_closed:
                    continue

                scale = 1.25 if doSecondRescale else 1.3
                # search frame for faces
                status = Face.faceInPicture(img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY), doSecondRescale = doSecondRescale, scale = scale)

                if status == 2:
                    text = termcolor.colored("FoundFace", 'green')
                    print(text)
                    servos.close()
                    self.eye_closed = True
                    start_time = time.monotonic()
                    print("Closed - sleeping 10 seconds")
                elif status == 1:
                    text = termcolor.colored("Maybe", 'yellow')
                    doSecondRescale = False
                    print(text)
                else:
                    text = termcolor.colored("No", 'cyan')
                    doSecondRescale = True
                    print(text)
    def run(self):
        """ Lightbar for confidence of smile """

        hight = int(480 / 2)
        width = int(640 / 2)
        vs = VideoStream(usePiCamera=True,
                         resolution=(width, hight),
                         framerate=10).start()
        vs.shutter_speed = 70
        time.sleep(3.0)
        counter = 0
        doSecondRescale = True
        while 1:
            frame = vs.read()
            if self.store_next_img:
                self.store_next_img = False
                name = str(time.time()) + ".png"
                cv2.imwrite(name, frame)

            # for usage without gui comment next line
            cv2.imshow("video", frame)
            cv2.waitKey(1)
            counter += 1
            print(counter, end="\t")
            if counter % 1 == 0:

                scale = 1.25 if doSecondRescale else 1.3
                smiles = Face.smile(img=cv2.cvtColor(frame,
                                                     cv2.COLOR_BGR2GRAY),
                                    doSecondRescale=doSecondRescale,
                                    scale=scale)
                average = self.movingMedian(0) if len(
                    smiles) == 0 else self.movingMedian(smiles[0])
                print(" Average: ", end="")
                # Debug output - the last measured smile confidences, used for median
                print(self._median_list)
                average = min(average, 5)
                if self.shouldRun:
                    ls.bar(average / 5, 100, 0, 0)