Table des matières:
- Étape 1: Installez Anaconda
- Étape 2: Télécharger Open CV Package
- Étape 3: Définir les variables environnementales
- Étape 4: Testez pour confirmer
- Étape 5: Créer un code pour la détection de visage
- Étape 6: Créer du code pour créer un ensemble de données
- Étape 7: Créer du code pour former le module de reconnaissance
- Étape 8: Créez un code pour reconnaître les visages et le résultat
Vidéo: Détection de visage + reconnaissance : 8 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Il s'agit d'un exemple simple d'exécution de la détection et de la reconnaissance des visages avec OpenCV à partir d'une caméra. REMARQUE: J'AI RÉALISÉ CE PROJET POUR LE CONCOURS DE CAPTEURS ET J'AI UTILISÉ LA CAMÉRA COMME CAPTEUR POUR SUIVRE ET RECONNAÎTRE LES VISAGES. Donc, notre objectif Dans cette session, 1. Installer Anaconda 2. Télécharger Open CV Package 3. Définir les variables environnementales 4. Tester pour confirmer 5 Créer un code pour la détection des visages 6. Créer un code pour créer un ensemble de données 7. Créer un code pour former le reconnaisseur 8. Créer un code pour reconnaître les visages &Résultat.
Étape 1: Installez Anaconda
Anaconda est essentiellement un IDE Python bien emballé qui est livré avec des tonnes de packages utiles, tels que NumPy, Pandas, IPython Notebook, etc. Il semble être recommandé partout dans la communauté scientifique. Consultez Anaconda pour l'installer.
Étape 2: Télécharger Open CV Package
Tout d'abord, rendez-vous sur le site officiel d'OpenCV pour télécharger le package OpenCV complet. Choisissez une version que vous aimez (2.x ou 3.x). Je suis sur Python 2.x et OpenCV 2.x - principalement parce que c'est ainsi que les didacticiels OpenCV-Python sont configurés/basés.
Dans mon cas, j'ai extrait le package (essentiellement un dossier) directement sur mon lecteur F. (F:\opencv).
Étape 3: Définir les variables environnementales
Copiez et collez le fichier cv2.pyd
Le répertoire Anaconda Site-packages (par exemple, F:\Program Files\Anaconda2\Lib\site-packages dans mon cas) contient les packages Python que vous pouvez importer. Notre objectif est de copier et coller le fichier cv2.pyd dans ce répertoire (afin que nous puissions utiliser l'import cv2 dans nos codes Python.).
Pour cela, copiez le fichier cv2.pyd…
À partir de ce répertoire OpenCV (la partie de début peut être légèrement différente sur votre machine):
# Machine Python 2.7 et 64 bits: F:\opencv\build\python\2.7\x64# Machine Python 2.7 et 32 bits: F:\opencv\build\python\2.7\x84
Dans ce répertoire Anaconda (la partie de début peut être légèrement différente sur votre machine):
F:\Program Files\Anaconda2\Lib\site-packages
Après avoir effectué cette étape, nous pourrons maintenant utiliser import cv2 en code Python. MAIS, nous devons encore faire un peu plus de travail pour que FFMPEG (codec vidéo) fonctionne (pour nous permettre de faire des choses comme traiter des vidéos.)
Faites un clic droit sur "Poste de travail" (ou "Ce PC" sous Windows 8.1) -> clic gauche sur Propriétés -> clic gauche sur l'onglet "Avancé" -> clic gauche sur le bouton "Variables d'environnement…". Ajoutez une nouvelle variable utilisateur pour pointer vers l'OpenCV (soit x86 pour le système 32 bits, soit x64 pour le système 64 bits.) Je suis actuellement sur une machine 64 bits.
32 bitsOPENCV_DIRC:\opencv\build\x86\vc12
64 bitsOPENCV_DIRC:\opencv\build\x64\vc12
Ajoutez %OPENCV_DIR%\bin au PATH de la variable utilisateur.
Par exemple, ma variable utilisateur PATH ressemble à ceci…
Avant:
F:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts
Après:
F:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts;%OPENCV_DIR%\bin
Ça y est nous avons terminé ! FFMPEG est prêt à être utilisé !
Étape 4: Testez pour confirmer
Nous devons tester si nous pouvons maintenant les faire dans Anaconda (via Spyder IDE):
- Importer le package OpenCV
- Utiliser l'utilitaire FFMPEG (pour lire/écrire/traiter des vidéos)
Test 1: Peut-on importer OpenCV ?
Pour confirmer qu'Anaconda est maintenant capable d'importer le package OpenCV-Python (à savoir, cv2), émettez-les dans la console IPython:
importer cv2
imprimer cv2._version_
Si le package cv2 est importé correctement sans erreur et que la version cv2 est imprimée, alors tout va bien !
Test 2: Peut-on utiliser le codec FFMPEG ?
Placer un échantillon
input_video.mp4
fichier vidéo dans un répertoire. Nous voulons tester si nous pouvons:
- lisez ce fichier vidéo.mp4, et
- écrivez un nouveau fichier vidéo (peut être.avi ou.mp4 etc.)
Pour ce faire, nous devons avoir un code python de test, appelez-le test.py. Placez-le dans le même répertoire que l'échantillon
input_video.mp4
déposer.
C'est quoi
test.py
peut ressembler (Remarque: merci aux suggestions de Pete et Warren dans le champ de commentaire - j'ai remplacé mon code de test d'origine par le sien - veuillez le tester vous-même et nous faire savoir si cela fonctionne mieux):
importer cv2
cap = cv2. VideoCapture("input_video.mp4") print cap.isOpened() # True = lire la vidéo avec succès. False - ne parvient pas à lire la vidéo. fourcc = cv2. VideoWriter_fourcc(*'XVID') out = cv2. VideoWriter("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened() # True = écrire la vidéo avec succès. False - ne pas écrire la vidéo. cap.release() out.release()
Ce test est TRÈS IMPORTANT. Si vous souhaitez traiter des fichiers vidéo, vous devez vous assurer qu'Anaconda / Spyder IDE peut utiliser le FFMPEG (codec vidéo). Il m'a fallu des jours pour que cela fonctionne. Mais j'espère que cela vous prendra beaucoup moins de temps !:)Remarque: un autre conseil très important lors de l'utilisation de l'IDE Anaconda Spyder. Assurez-vous de vérifier le répertoire de travail actuel (CWD) !!!
Étape 5: Créer un code pour la détection de visage
But
Dans cette séance,
- Nous verrons les bases de la détection de visage à l'aide des classificateurs en cascade Haar
- Nous allons étendre la même chose pour la détection des yeux, etc.
Détection en cascade Haar dans OpenCV
Nous traiterons ici de la détection. OpenCV contient déjà de nombreux classificateurs pré-formés pour le visage, les yeux, le sourire, etc. Ces fichiers XML sont stockés dans le dossier opencv/data/haarcascades/. Créons un détecteur de visage et d'yeux avec OpenCV. Nous devons d'abord charger les classificateurs XML requis. Chargez ensuite notre image d'entrée (ou vidéo) en mode niveaux de gris OU nous pouvons utiliser la caméra (pour la détection de visage en temps réel)
importer numpy en tant que np
import cv2 face_cascade = cv2. CascadeClassifier('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier('F:/Program Files/opencv/sources/data/haarcascades_eyes/haarcascade.xml') cap = cv2. VideoCapture(0) tandis que 1: ret, img = cap.read() gray = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.5, 5) pour (x, y, w, h) dans les faces: cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = gray[y:y +h, x:x+w] roi_color = img[y:y+h, x:x+w] eyes = eye_cascade.detectMultiScale(roi_gray) pour (ex, ey, ew, eh) dans les yeux: cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2) print "found " +str(len(faces)) +" face(s)" cv2.imshow ('img', img) k = cv2.waitKey(30) & 0xff si k == 27: break cap.release() cv2.destroyAllWindows()
Étape 6: Créer du code pour créer un ensemble de données
Nous faisons de la reconnaissance faciale, vous aurez donc besoin de quelques images de visage ! Vous pouvez soit créer votre propre ensemble de données, soit commencer avec l'une des bases de données de visages disponibles, https://face-rec.org/databases/ vous donne un aperçu à jour. Trois bases de données intéressantes sont (des parties de la description sont extraites de
- AT&T Facedatabase
- Yale Facedatabase A
- Yale Facedatabase B étendu
ICI j'utilise mon propre ensemble de données….avec l'aide du code qui est donné ci-dessous:
importer numpy en tant que np
import cv2 face_cascade = cv2. CascadeClassifier('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture(0) id = raw_input('enter user id') sampleN=0; tandis que 1: ret, img = cap.read() gray = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) pour (x, y, w, h) dans les faces: sampleN =échantillonN+1; cv2.imwrite("F:/Program Files/projects/face_rec/facesData/User."+str(id)+ "." +str(sampleN)+ ".jpg", gray[y:y+h, x: x+w]) cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey(100) cv2.imshow('img', img) cv2.waitKey(1) si sampleN > 20: break cap.release() cv2.destroyAllWindows()
Étape 7: Créer du code pour former le module de reconnaissance
Créer la fonction pour préparer l'ensemble d'apprentissage
Maintenant, nous allons définir une fonction
getImagesWithID(chemin)
qui prend le chemin absolu vers la base de données d'images comme argument d'entrée et renvoie un tuple de 2 listes, l'un contenant les visages détectés et l'autre contenant l'étiquette correspondante pour ce visage. Par exemple, si le ième index dans la liste des visages représente le 5ème individu dans la base de données, alors le ième emplacement correspondant dans la liste des étiquettes a une valeur égale à 5.
Convertissez maintenant les faces de l'ensemble de données (créées à l'étape 6) en fichier.yml à l'aide du code ci-dessous:
importer le système d'exploitation
import numpy as np import cv2 de PIL import Image # Pour la reconnaissance faciale, nous utiliserons le reconnaisseur de reconnaissance faciale LBPH = cv2.createLBPHFaceRecognizer(); path="F:/Program Files/projects/face_rec/facesData" def getImagesWithID(path): imagePaths = [os.path.join(path, f) for f in os.listdir(path)] # print image_path #getImagesWithID(path) faces = IDs = pour imagePath dans imagePaths: # Lire l'image et la convertir en niveaux de gris facesImg = Image.open(imagePath).convert('L') faceNP = np.array(facesImg, 'uint8') # Récupère l'étiquette de l'image ID= int(os.path.split(imagePath)[-1].split(".")[1]) # Détecte le visage dans l'image faces.append(faceNP) IDs.append (ID) cv2.imshow("Ajout de visages pour la formation", faceNP) cv2.waitKey(10) return np.array(IDs), faces Ids, faces = getImagesWithID(path) Recognizer.train(faces, Ids) Recognizer.save ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows()
en utilisant ce code, tous les ensembles de données de visage convertis en un seul fichier.yml…..l'emplacement du chemin est ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")
Étape 8: Créez un code pour reconnaître les visages et le résultat
Guyzz c'est la dernière étape dans laquelle nous pouvons créer le code pour reconnaître les visages à l'aide de votre webcam DANS CETTE ÉTAPE IL Y A DEUX OPÉRATIONS QUI VA EFFECTUER…. 1. capturer la vidéo de la caméra 2. la comparer avec votre fichier.yml
importer numpy en tant que npimport cv2 face_cascade = cv2. CascadeClassifier('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture(0) rec = cv2.createLBPHFaceRecognizer(); rec.load("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") id=0 font=cv2.cv. InitFont(cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) tandis que 1: ret, img = cap.read() gray = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.5, 5) pour (x, y, w, h) dans les faces: cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf=rec.predict(gray[y:y+h, x:x+w]) if(id==2): id="alok" if id==1: id="alok" if id==3: id="anjali" if id==4: id="Gaurav" if id= =5: id='rahul' si id==6: id="akshay" cv2.cv. PutText(cv2.cv.fromarray(img), str(id), (x, y+h), police, 255) cv2.imshow('img', img) si cv2.waitKey(1) == ord('q'): break cap.release()
cv2.destroyAllWindows()
et enfin le résultat viendra devant vos yeux…… vous pouvez également télécharger le fichier zip sous le lien:Cliquez ici pour télécharger les codes. comme cette instructable….. plzzz abonnez-moi et votez pour moi…..merci les amis:)
Conseillé:
Cadre photo OSD avec reconnaissance faciale : 11 étapes (avec photos)
Cadre photo OSD sensible au visage : ce Instructables montre comment créer un cadre photo avec un affichage à l'écran (OSD) sensible au visage. L'OSD peut afficher l'heure, la météo ou d'autres informations Internet que vous souhaitez
Miroir de reconnaissance faciale avec compartiment secret : 15 étapes (avec photos)
Miroir de reconnaissance faciale avec compartiment secret : J'ai toujours été intrigué par les compartiments secrets toujours créatifs utilisés dans les histoires, les films, etc. Alors, quand j'ai vu le concours du compartiment secret, j'ai décidé d'expérimenter l'idée moi-même et de fabriquer un miroir ordinaire qui ouvre un s
Reconnaissance d'images avec les cartes K210 et Arduino IDE/Micropython : 6 étapes (avec photos)
Reconnaissance d'images avec les cartes K210 et Arduino IDE/Micropython : j'ai déjà écrit un article sur la façon d'exécuter des démos OpenMV sur Sipeed Maix Bit et j'ai également réalisé une vidéo de démonstration de détection d'objets avec cette carte. L'une des nombreuses questions que les gens se sont posées est la suivante : comment puis-je reconnaître un objet que le réseau de neurones n'est pas tr
Détection de visage Opencv, formation et reconnaissance : 3 étapes
Détection, formation et reconnaissance des visages Opencv : OpenCV est une bibliothèque de vision par ordinateur open source qui est très populaire pour effectuer des tâches de traitement d'image de base telles que le flou, le mélange d'images, l'amélioration de la qualité d'image ainsi que la qualité vidéo, le seuillage, etc. En plus du traitement d'image, ça prouve
Sonnette avec reconnaissance faciale : 7 étapes (avec photos)
Sonnette avec reconnaissance faciale : motivationRécemment, il y a eu une vague de vols dans mon pays qui ciblent les personnes âgées dans leurs propres maisons. Habituellement, l'accès est accordé par les occupants eux-mêmes puisque les visiteurs les convainquent qu'ils sont des soignants/infirmiers. Ce