face_eye_detection.py
# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemple de détection des yeux du visage
#
# Ce script utilise le détecteur frontalface intégré pour trouver un visage puis
# les yeux dans le visage. Si vous souhaitez déterminer la direction du regard, consultez
# le script iris_detection pour un exemple sur la façon de procéder.
import csi
import time
import image
csi0 = csi.CSI()
csi0.reset()
csi0.contrast(1)
csi0.gainceiling(16)
csi0.framesize(csi.HQVGA)
csi0.pixformat(csi.GRAYSCALE)
# Charger la cascade de Haar
# Par défaut, ceci utilisera toutes les étapes ; moins d'étapes est plus rapide mais moins précis.
face_cascade = image.HaarCascade("/rom/haarcascade_frontalface.cascade", stages=25)
eyes_cascade = image.HaarCascade("/rom/haarcascade_eye.cascade", stages=24)
print(face_cascade, eyes_cascade)
# Horloge FPS
clock = time.clock()
while True:
clock.tick()
# Capturer un instantané
img = csi0.snapshot()
# Trouver un visage !
# Remarque : un facteur d'échelle plus faible réduit davantage l'image et détecte des objets plus petits.
# Un seuil plus élevé donne un taux de détection plus élevé, avec davantage de faux positifs.
objects = img.find_features(face_cascade, threshold=0.5, scale=1.5)
# Dessiner les visages
for face in objects:
img.draw_rectangle(face)
# Chercher maintenant les yeux dans chaque visage.
# Remarque : utilisez ici un seuil plus élevé (plus de détections) et une échelle plus faible (pour trouver de petits objets)
eyes = img.find_features(
eyes_cascade, threshold=0.5, scale=1.2, roi=face
)
for e in eyes:
img.draw_rectangle(e)
# Afficher le FPS.
# Remarque : le FPS réel est plus élevé, le streaming du tampon d'image le ralentit.
print(clock.fps())