diff --git a/usr/examples/eye_detection.py b/usr/examples/eye_detection.py index b460a3ed7..d68584b76 100644 --- a/usr/examples/eye_detection.py +++ b/usr/examples/eye_detection.py @@ -6,38 +6,39 @@ sensor.reset() # Sensor settings sensor.set_contrast(1) sensor.set_gainceiling(16) -sensor.set_framesize(sensor.QCIF) +sensor.set_framesize(sensor.QVGA) sensor.set_pixformat(sensor.GRAYSCALE) # Load Haar Cascade # By default this will use all stages, lower satges is faster but less accurate. -face_cascade = image.HaarCascade("frontalface", stages=16) -print(face_cascade) +face_cascade = image.HaarCascade("frontalface", stages=25) +eyes_cascade = image.HaarCascade("eye", stages=24) +print(face_cascade, eyes_cascade) # FPS clock clock = time.clock() + while (True): clock.tick() # Capture snapshot img = sensor.snapshot() - - # Find objects. - # Note: Lower scale factor scales-down the img more and detects smaller objects. + # Find a face ! + # Note: Lower scale factor scales-down the image more and detects smaller objects. # Higher threshold results in a higher detection rate, with more false positives. - objects = img.find_features(face_cascade, threshold=0.65, scale=1.65) + objects = img.find_features(face_cascade, threshold=0.5, scale=1.5) - # Draw objects - for roi in objects: - #img.histeq() - eyes = img.find_eyes(roi) - img.draw_cross(eyes[0], eyes[1]) - img.draw_cross(eyes[2], eyes[3]) - img.draw_rectangle(roi) - - if (len(objects)): - # Add a small delay to see the drawing on the FB - time.sleep(100) + # Draw faces + for face in objects: + img.draw_rectangle(face) + # Now find eyes within each face. + # Note: Use a higher threshold here (more detections) and lower scale (to find small objects) + eyes = img.find_features(eyes_cascade, threshold=0.5, scale=1.25, roi=face) + for e in eyes: + e = [face[0]+e[0], face[1]+e[1], e[2], e[3]] # Add face offset + iris = img.find_eyes(e) + img.draw_rectangle(e) + img.draw_cross(iris[0], iris[1]) # Print FPS. # Note: Actual FPS is higher, streaming the FB makes it slower.