openmv/scripts/examples/25-Machine-Learning/nn_haar_smile_detection.py
Kwabena W. Agyeman f49576a679 Make both networks output the same value types.
Both CIFAR and LENET work still.

The smile network... I couldn;t really get to work before or afterwards.
I noticed the Haar one has trouble finding my face. Maybe fix via using
the contrast settings of the previous Haar scripts?
2018-06-22 02:28:49 -04:00

38 lines
1.1 KiB
Python

# Simle detection using Haar Cascade + CNN.
import sensor, time, image, os, nn
sensor.reset() # Reset and initialize the sensor.
sensor.set_contrast(2)
sensor.set_pixformat(sensor.GRAYSCALE) # Set pixel format to RGB565
sensor.set_framesize(sensor.QQVGA) # Set frame size to QVGA (320x240)
sensor.skip_frames(time=2000)
sensor.set_auto_gain(False)
# Load smile detection network
net = nn.load('/smile.network')
# Load Face Haar Cascade
face_cascade = image.HaarCascade("frontalface", stages=25)
print(face_cascade)
# FPS clock
clock = time.clock()
while (True):
clock.tick()
# Capture snapshot
img = sensor.snapshot()
# Find faces.
objects = img.find_features(face_cascade, threshold=0.75, scale_factor=1.25)
# Detect smiles
for r in objects:
# Resize and center detection area
r = [r[0], r[1]+10, int(r[2]*1.1), int(r[2]*1.1)]
img.draw_rectangle(r)
out = net.forward(img, roi=r, softmax=True)
img.draw_string(r[0], r[1], ':)' if (out[0] > 0.8) else ':(', color=(255), scale=2)
print(clock.fps())