!/usr/bin/python
-*- coding: utf-8 -*-
import cv2, os
import numpy as np
from PIL import Image
# Image d'apprentissage
train_path = './training_data'
# Image de test
test_path = './test_data'
# Classificateur d'entités de type Haar
cascadePath = "./haarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(cascadePath)
LBPH
recognizer = cv2.createLBPHFaceRecognizer()
def get_images_and_labels(path):
#Array pour stocker des images
images = []
# Array pour stocker les étiquettes
labels = []
#Array pour stocker les noms de fichiers
files = []
for f in os.listdir(path):
# Chemin de l'image
image_path = os.path.join(path, f)
# Charger l'image en échelle de gris
image_pil = Image.open(image_path).convert('L')
Stocké dans le tableau # NumPy
image = np.array(image_pil, 'uint8')
# Le classificateur d'entités de type Haar détecte le visage (les paramètres sont appropriés)
faces = faceCascade.detectMultiScale(image,1.1,9,0)
# Traitement de l'image du visage détecté
for (x, y, w, h) in faces:
# Redimensionner le visage à la taille 200x200
roi = cv2.resize(image[y: y + h, x: x + w], (200, 200), interpolation=cv2.INTER_LINEAR)
#Store images dans un tableau
images.append(roi)
#Get label from file name "En supposant un nom de fichier comme 0_xxxxx.jpg "
labels.append(int(f[0]))
# Stocker les noms de fichiers dans un tableau
files.append(f)
return images, labels, files
# Obtenir l'image de la formation
images, labels, files = get_images_and_labels(train_path)
# Mise en œuvre de la formation
recognizer.train(images, np.array(labels))
# Obtenir une image de test
test_images, test_labels, test_files = get_images_and_labels(test_path)
i = 0
while i < len(test_labels):
#Prediction pour les images de test
label, confidence = recognizer.predict(test_images[i])
# Sortie du résultat de la prédiction vers la console
print("Test Image: {}, Predicted Label: {}, Confidence: {}".format(test_files[i], label, confidence))
#Afficher l'image de test
cv2.imshow("test image", test_images[i])
cv2.waitKey(1000)
i += 1
cv2.destroyAllWindows()
Recommended Posts