altered output

This commit is contained in:
Artwork1 2017-12-15 23:22:09 +01:00
parent de19898f38
commit b6cef14d64

62
scan_faces.py Normal file → Executable file
View file

@ -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())