Étape 1 : Importer les librairies et charger le classificateur Haar Cascade
La première étape consiste à importer les librairies nécessaires et à charger le classificateur Haar Cascade. Nous utiliserons OpenCV pour le traitement d'images et le classificateur Haar Cascade pour la détection de visages.
import cv2
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
Ce code importe la librairie OpenCV et charge le classificateur Haar Cascade pour la détection de visages. Le classificateur est stocké dans la variable face_cascade
et sera utilisé ultérieurement pour détecter les visages dans les images ou les vidéos.
Étape 2 : Accéder à la caméra et lire les images
La deuxième étape consiste à accéder à la caméra et à lire les images. Nous utiliserons la fonction VideoCapture
d'OpenCV pour accéder à la caméra et la fonction read
pour lire les images.
cap = cv2.VideoCapture(2)
while True:
_, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Ce code accède à la caméra par son index (2 dans cet exemple) et lit les images en boucle. Chaque image est ensuite convertie en niveaux de gris en utilisant la fonction cvtColor
d'OpenCV. La conversion en niveaux de gris permet de simplifier le traitement d'images et d'améliorer la performance de la détection de visages.
Étape 3 : Détecter les visages et dessiner les rectangles
La troisième étape consiste à détecter les visages dans l'image en niveaux de gris et à dessiner des rectangles autour des visages détectés. Nous utiliserons la fonction detectMultiScale
du classificateur Haar Cascade pour détecter les visages et la fonction rectangle
d'OpenCV pour dessiner les rectangles.
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
Ce code détecte les visages dans l'image en niveaux de gris en utilisant la fonction detectMultiScale
du classificateur Haar Cascade. Les paramètres 1.1
et 4
sont des paramètres de réglage qui affectent la précision et la performance de la détection. La fonction renvoie une liste de rectangles, où chaque rectangle représente un visage détecté. Ensuite, une boucle est utilisée pour parcourir les rectangles et dessiner des rectangles bleus autour des visages détectés en utilisant la fonction rectangle
d'OpenCV.
Étape 4 : Afficher l'image et quitter le programme
La dernière étape consiste à afficher l'image avec les rectangles dessinés et à permettre à l'utilisateur de quitter le programme en appuyant sur la touche Échap. Nous utiliserons la fonction imshow
d'OpenCV pour afficher l'image et la fonction waitKey
pour attendre une touche.
cv2.imshow('img', img)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
Ce code affiche l'image avec les rectangles dessinés en utilisant la fonction imshow
d'OpenCV. La fonction waitKey
attend une touche pendant 30 millisecondes. Si la touche Échap (code ASCII 27) est enfoncée, la boucle est interrompue et le programme se termine. Les fonctions release
et destroyAllWindows
sont utilisées pour libérer les ressources et fermer les fenêtres OpenCV.