iris_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 d'iris 2
#
# Cet exemple montre comment trouver le regard (détection de la pupille) après avoir trouvé
# les yeux dans une image. Ce script utilise la fonction find_eyes qui détermine
# le point central de la ROI censée contenir une pupille. Pour ce faire, il
# trouve simplement le centre de la zone la plus sombre dans la ROI de l'œil, qui correspond au centre de la pupille.
#
# Remarque : ce script ne détecte pas d'abord un visage, utilisez-le avec l'objectif téléobjectif.
import csi
import time
import image
csi0 = csi.CSI()
csi0.reset()
csi0.contrast(3)
csi0.gainceiling(16)
csi0.framesize(csi.VGA)
# Binning/recadrage de l'image en 200x100, ce qui donne plus de détails avec moins de données à traiter
csi0.window((220, 190, 200, 100))
csi0.pixformat(csi.GRAYSCALE)
# Charger la cascade de Haar
# Par défaut, toutes les étapes seront utilisées ; moins d'étapes est plus rapide mais moins précis.
eyes_cascade = image.HaarCascade("/rom/haarcascade_eye.cascade", stages=24)
print(eyes_cascade)
# Horloge FPS
clock = time.clock()
while True:
clock.tick()
# Capturer un instantané
img = csi0.snapshot()
# Trouver les yeux !
# 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.
eyes = img.find_features(eyes_cascade, threshold=0.5, scale=1.5)
# Trouver l'iris
for e in eyes:
iris = img.find_eye(roi=e)
img.draw_rectangle(e)
img.draw_cross(iris)
# Afficher le FPS.
# Remarque : le FPS réel est plus élevé, le streaming du tampon d'image le ralentit.
print(clock.fps())