face_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 de visage
#
# Cet exemple montre la fonctionnalité de détection de visage intégrée de l'OpenMV Cam.
#
# La détection de visage fonctionne en utilisant le détecteur de caractéristiques en cascade de Haar sur une image. Une
# cascade de Haar est une série de vérifications simples de contraste de zones. Pour le détecteur
# frontalface intégré, il y a 25 étapes de vérifications, chaque étape comportant
# des centaines de vérifications. Les cascades de Haar s'exécutent rapidement car les étapes suivantes
# ne sont évaluées que si les étapes précédentes réussissent. De plus, votre OpenMV Cam utilise
# une structure de données appelée image intégrale pour exécuter rapidement chaque vérification
# de contraste de zone en temps constant (c'est pourquoi la détection de caractéristiques
# se limite aux niveaux de gris, en raison des besoins en espace pour l'image intégrale).

import csi
import time
import image

csi0 = csi.CSI()
csi0.reset()
csi0.contrast(3)
csi0.gainceiling(16)
csi0.framesize(csi.HQVGA)  # HQVGA et GRAYSCALE sont les meilleurs réglages pour le suivi de visage.
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)
print(face_cascade)

# Horloge FPS
clock = time.clock()

while True:
    clock.tick()

    # Capturer un instantané
    img = csi0.snapshot()

    # Trouver des objets.
    # 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.75, scale=1.25)

    # Dessiner les objets
    for r in objects:
        img.draw_rectangle(r)

    # Afficher le FPS.
    # Remarque : le FPS réel est plus élevé, le streaming du tampon d'image le ralentit.
    print(clock.fps())

results matching ""

    No results matching ""