Après avoir lu un blog sur la détection de visages, je me suis dit que c'est facile d'écrire un petit programme pour vérifier que cela marche. Et c'est vrai ou pas si loin. Voici la recette sur Windows.
Tout d'abord, il faut installer si vous ne l'avez jamais fait et en faisant bien attention aux numéros de version. J'ai testé les versions x86 (= win32).
Finalement, il suffit d'exécuter ce programme python qu'on sauvegarde dans le répertoire où se trouve déjà l'image et le fichier haarcascade_frontalface_alt2.xml.
# coding:latin-1 import sys, os import cv2 def detecte_visages(image, image_out, show = False): # on charge l'image en mémoire img = cv2.imread(image) # on charge le modèle de détection des visages face_model = cv2.CascadeClassifier("haarcascade_frontalface_alt2.xml") # détection du ou des visages faces = face_model.detectMultiScale(img) # on place un cadre autour des visages print ("nombre de visages", len(faces), "dimension de l'image", img.shape, "image", image) for face in faces: cv2.rectangle(img, (face[0], face[1]), (face[0] + face[2], face[0] + face[3]), (255, 0, 0), 3) # on sauvegarde le résultat final cv2.imwrite(image_out, img) # pour voir l'image, presser ESC pour sortir if show : cv2.imshow("visage",img) if cv2.waitKey(5000) == 27: cv2.destroyWindow("visage") if __name__ == "__main__": # applique for file in os.listdir(".") : if file.startswith("visage") : continue # déjà traité if os.path.splitext(file)[-1].lower() in [".jpg", ".jpeg", ".png" ] : detecte_visages (file, "visage_" + file)
Et on obtient :
Quelques essais plus loin, on s'aperçoit que le modèle n'aime pas trop les profils. Une fois qu'on a extrait le visage, on peut essayer de le reconnaître. Mais ce sera pour une autre fois.