Table des matières:

Détection de visage Opencv, formation et reconnaissance : 3 étapes
Détection de visage Opencv, formation et reconnaissance : 3 étapes

Vidéo: Détection de visage Opencv, formation et reconnaissance : 3 étapes

Vidéo: Détection de visage Opencv, formation et reconnaissance : 3 étapes
Vidéo: Créer un système de RECONNAISSANCE FACIALE ? Opencv et Python 2024, Juillet
Anonim
Détection de visage Opencv, formation et reconnaissance
Détection de visage Opencv, formation et reconnaissance

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, il fournit divers apprentissage en profondeur pré-formés. modèles qui peuvent être directement utilisés pour résoudre des tâches simples à accomplir.

pour l'installation d'opencv, utilisez ce lien

www.instructables.com/id/Opencv-and-Python…

Étape 1: Détecter le visage dans une vidéo en temps réel

vous pouvez rechercher sur Google de nombreux programmes de détection de visages et les visages détectés doivent être enregistrés dans un dossier pour un traitement d'image ultérieur, comme la formation et l'étiquetage. nous allons collecter 30 échantillons

importer cv2

importer numpy en tant que np

importer os importer sys

caméra = cv2. VideoCapture(0)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml") #ajouter le chemin de votre fichier harcascade

name = raw_input("Quel est son nom ? ")

#tous les fichiers seront enregistrés dans le dossier Users/prasad/Documents/images

dirName = "/Users/prasad/Documents/images/" + nom

print(dirName) sinon os.path.exists(dirName): os.makedirs(dirName) print("Répertoire créé") sinon: print("Le nom existe déjà") sys.exit()

compte = 1

#nous allons collecter 30 échantillons

alors que compte 30: break # frame = frame.array gray = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, 1.5, 5) pour (x, y, w, h) dans les faces: roiGray = gray[y:y+h, x:x+w] fileName = dirName + "/" + name + str(count) + ".jpg" cv2.imwrite(fileName, roiGray) cv2.imshow("face", roiGray) cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) count += 1 cv2.imshow('frame', frame) key = cv2.waitKey(1)

si clé == 27:

Pause

#camera.release()

cv2.destroyAllWindows()

Étape 2: Formation de vos exemples d'images

Une fois la détection des visages terminée, nous pouvons procéder à la formation des images

importer osimport numpy en tant que np de PIL importer Image importer cv2 importer pickle #import serial

#ser = serial. Serial('/dev/ttyACM0', 9600, timeout=1)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")

reconnaissance = cv2.face. LBPHFaceRecognizer_create()

baseDir = os.path.dirname(os.path.abspath(_file_))

#trainer les images sous le dossier images

imageDir = os.path.join(baseDir, "images")

Id actuel = 1

labelIds = {} yLabels = xTrain = #ser.write("Formation…..".encode())

pour la racine, les répertoires, les fichiers dans os.walk(imageDir):

print(root, dirs, files) pour le fichier dans les fichiers: print(file) if file.endswith("png") ou file.endswith("jpg"): path = os.path.join(root, file) label = os.path.basename(root) print(label)

si ce n'est pas le cas dans labelIds:

labelIds[label] = currentId print(labelIds) currentId += 1

id_ = étiquetteIds[étiquette]

pilImage = Image.open(path).convert("L") imageArray = np.array(pilImage, "uint8") faces = faceCascade.detectMultiScale(imageArray, scaleFactor=1.1, minNeighbors=5)

pour (x, y, w, h) dans les faces:

roi = imageArray[y:y+h, x:x+w] xTrain.append(roi) yLabels.append(id_)

avec open("labels", "wb") comme f:

pickle.dump(labelIds, f) f.close()

reconnaître.train(xTrain, np.array(yLabels))

reconnaissant.save("trainer.yml") print(labelIds)

Étape 3: Reconnaître les visages

une fois l'entraînement terminé, vous pouvez maintenant exécuter le code ci-dessous pour qu'il commence à reconnaître vos visages entraînés

import osos.environ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pickle #import RPi. GPIO as GPIO from time import sleep

avec open('labels', 'rb') comme f:

dicti = pickle.load(f) f.close()

caméra = cv2. VideoCapture(0)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")

reconnaisseur = cv2.face. LBPHFaceRecognizer_create() reconnaitre.read("trainer.yml")

police = cv2. FONT_HERSHEY_SIMPLEX

dernier=''

#for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):

tandis que True: ret, frame = camera.read() gray = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 5) pour (x, y, w, h) dans les visages: roiGray = gray[y:y+h, x:x+w]

id_, conf = reconnaitre.predict(roiGray)

pour le nom, la valeur dans dicti.items():

if value == id_: print(name) cv2.putText(frame, name, (x, y), font, 2, (0, 0, 255), 2, cv2. LINE_AA) if name!=last: last= nom si conf <= 70: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow('cadre', cadre)

clé = cv2.waitKey(1)

si clé == 27:

casser cv2.destroyAllWindows()

Conseillé: