Reconnaisance faciale python
yg_be Messages postés 24281 Statut Contributeur -
Bonjour. Je cherche a développer un petit logiciel de reconnaisance faciale avec python qui serait capable de repérer des visages sur un flux vidéo en direct, d'ouvrir une fenétre avec le retour vidéo et les visages encadrés, et enfin de comparer les visages avec une banque de photos pour identifier des personnes.
Mon code ne marche pas et je ne comprend pas pourquoi
Pourriez vous m'aider?
PS: existe il un moyen de mettre le code dans une fenétre dédiée pour ne pas encombrer la page CCM?
Merci d'avance
- Reconnaisance faciale python
- Citizen code python avis - Accueil - Outils
- \R python ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Citizen code python solution - Forum Python
4 réponses
Bonjour,
Il y a l'option d'insérer un bout de code dans les options vers le haut de la boite de dialogue.
Il serait aussi utile de donner le(s) code(s) d'erreur.
Le code pour écrire un vrai programme de reconnaissance faciale me semble énorme, pas sûr de pouvoir aider si le code contient 3000 lignes...
CDLT.
Bonjour,
"Mon code ne marche pas et je ne comprend pas pourquoi"
Qu'est ce qui ne marche pas ?
Il y a des messages d'erreurs ?
Dans ce cas, pour que la console ne se ferme pas, tu ouvres d'abord la
console, puis tu glisse/dépose ton fichier dedans depuis l'explorateur
et tu envoies
La console ne se fermera pas
Le code contient moins de 70 lignes, et il marchait avant que j'ajoute le programme pour comparer les visages détéctés a un dossier de visages
PS: Tout est commenté car c'etait un projet de cours
import cv2 import face_recognition import os import keyboard # Charger le classificateur de visage pré-entrainé face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') # Charger les images de visages du dossier folder_path = "C:\Users\camil\OneDrive\Documents\travail\TSIN 2023-2024\SIN\reco faciale\images" known_faces = [] known_names = [] for filename in os.listdir(folder_path): image = face_recognition.load_image_file(os.path.join(folder_path, filename)) encoding = face_recognition.face_encodings(image)[0] known_faces.append(encoding) known_names.append(os.path.splitext(filename)[0]) # Utiliser la webcam (0 indique la première webcam, vous pouvez ajuster cela si vous avez plusieurs webcams) cap = cv2.VideoCapture(0) # Créer une fenêtre pour l'affichage du flux vidéo cv2.namedWindow('Reconnaissance faciale en temps réel', cv2.WINDOW_NORMAL) time.sleep(10) while True: # Capturer une trame vidéo ret, frame = cap.read() # Convertir la trame en niveaux de gris gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Détecter les visages dans la trame faces = face_cascade.detectMultiScale(gray_frame, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) # Boucle sur les visages détectés for (x, y, w, h) in faces: # Extraire l'encodage du visage face_encoding = face_recognition.face_encodings(frame, [(y, x + w, y + h, x)])[0] # Comparer le visage avec les visages connus matches = face_recognition.compare_faces(known_faces, face_encoding) name = "Inconnu" # Si une correspondance est trouvée, utiliser le nom correspondant if True in matches: first_match_index = matches.index(True) name = known_names[first_match_index] # Dessiner un rectangle autour du visage cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) # Afficher le nom au-dessus du rectangle cv2.putText(frame, name, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) # Afficher la trame résultante cv2.imshow('Reconnaissance faciale en temps réel', frame) # S'arrêter si la touche 'q' est enfoncée if cv2.waitKey(1) & 0xFF == ord('q'): break # Libérer la capture vidéo et fermer la fenêtre cap.release() cv2.destroyAllWindows()Salut,
# Comparer le visage avec les visages connus matches = face_recognition.compare_faces(known_faces, face_encoding)Ta variable matches est un booléen, donc la syntaxe de ta condition if n'est pas bonne et tu devrais avoir un message d'erreur du genre :
Donc remplacer :
par :
Je l'ai fait mais toujours rien pourtant l'ancienne version qui ne faisait que chercher les images sur le flux vidéo marchait bien. Je la met ci-dessous:
import cv2 # Charger le classificateur de visage pré-entrainé face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') # Utiliser la webcam (0 indique la première webcam, vous pouvez ajuster cela si vous avez plusieurs webcams) cap = cv2.VideoCapture(0) # Créer une fenêtre pour l'affichage du flux vidéo cv2.namedWindow('Reconnaissance faciale en temps réel', cv2.WINDOW_NORMAL) while True: # Capturer une trame vidéo ret, frame = cap.read() # Convertir la trame en niveaux de gris gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Détecter les visages dans la trame faces = face_cascade.detectMultiScale(gray_frame, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) # Dessiner des rectangles autour des visages détectés for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) # Afficher la trame résultante cv2.imshow('Reconnaissance faciale en temps réel', frame) # S'arrêter si la touche 'q' est enfoncée if cv2.waitKey(1) & 0xFF == ord('q'): break # Libérer la capture vidéo et fermer la fenêtre cap.release() cv2.destroyAllWindows()Un autre problème, tu utilises :
sans avoir importé le module.
Ca ne marche toujours pas :(