From b6cef14d64a0595b2157332953712675abde99fd Mon Sep 17 00:00:00 2001 From: Artwork1 Date: Fri, 15 Dec 2017 23:22:09 +0100 Subject: [PATCH] altered output --- scan_faces.py | 62 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 22 deletions(-) mode change 100644 => 100755 scan_faces.py diff --git a/scan_faces.py b/scan_faces.py old mode 100644 new mode 100755 index d7b21eb..afaa4f4 --- a/scan_faces.py +++ b/scan_faces.py @@ -1,3 +1,5 @@ +#!/usr/bin/python + import io import picamera import cv2 @@ -7,20 +9,10 @@ import time import Adafruit_CharLCD as LCD -# Init camera -camera = picamera.PiCamera() -camera.resolution = (1280, 720) - -# Init classifier, various options: -#~ /usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml (~22sec) -#~ /usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml (>25sec) -#~ /usr/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml (~21sec) -#~ /usr/share/opencv/haarcascades/haarcascade_frontalface_alt_tree.xml (~14sec, seems to miss many faces) -classifier = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml') - # Set FPS (though RPi is probably to slow to meet it ;-) FPS = 1.0 frameTimeDelta = datetime.timedelta(seconds=1.0/FPS) +dimTimeDelta = datetime.timedelta(seconds=10) # Init LCD lcd_rs = 27 @@ -37,8 +29,29 @@ lcd_rows = 2 lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) +lcd.clear() +lcd.message("Init scanner.") + +# Init camera +camera = picamera.PiCamera() +camera.resolution = (1280, 720) + +lcd.clear() +lcd.message("Init scanner..") + +# Init classifier, various options: +#~ /usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml (~22sec) +#~ /usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml (>25sec) +#~ /usr/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml (~21sec) +#~ /usr/share/opencv/haarcascades/haarcascade_frontalface_alt_tree.xml (~14sec, seems to miss many faces) +classifier = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml') +lcd.clear() +lcd.message("Init scanner...") + prevFaceCount = 0 -totalUse = 0 +totalUse = 0 #in face-seconds + +lastFaceTime = datetime.datetime.utcnow() while True: print(time.time(),"GO") @@ -56,22 +69,27 @@ while True: print(time.time(),"Found {} faces".format(len(faces))) + end = datetime.datetime.utcnow() + # take the frame as being representative of whole frame + scanDuration = (end - start).total_seconds() + totalUse += len(faces) * scanDuration + lcd.clear() - lcd.message("Current {:>8}\nTotal {:>10}".format(len(faces), totalUse)) - if len(faces) < 1 and prevFaceCount < 1: + #~ lcd.message("viewers {:>8}\nview-min. {:>7.2f}".format(len(faces), totalUse/60)) + lcd.message("viewers {:>8}\nview-sec {:>7}".format(len(faces), int(totalUse))) + if len(faces) < 1 and end - lastFaceTime > dimTimeDelta: lcd.set_backlight(0) else: lcd.set_backlight(1) - end = datetime.datetime.utcnow() - prevFaceCount = len(faces) - totalUse += len(faces) - - if end - start < frameTimeDelta: + if len(faces) > 0: + lastFaceTime = end - waitTime = frameTimeDelta - (end-start) - print("wait {}".waitTime.total_seconds()) - time.sleep(waitTime.total_seconds()) + #~ if end - start < frameTimeDelta: + + #~ waitTime = frameTimeDelta - (end-start) + #~ print("wait {}".waitTime.total_seconds()) + #~ time.sleep(waitTime.total_seconds())