――Vous pouvez l'exécuter sans trop connaître les caractéristiques d'OpenCV, mais la clé est de savoir si OpenCV peut être lu normalement.
face_detect.py
# -*- coding:utf-8 -*-
import cv2
import numpy as np
import os.path
from pathlib import Path
#Répertoire avec les données d'image collectées précédemment
input_data_path = '{Chemin du répertoire}'
#Répertoire pour enregistrer l'image recadrée
save_path = '{Chemin du répertoire}'
#Créer un répertoire de destination
Path(save_path).mkdir(parents=True, exist_ok=True)
#Chemin du classificateur par défaut OpenCV.(https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.Utiliser un fichier xml)
cascade_path = '/usr/local/Cellar/opencv3/3.2.0/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascade_path)
#Nombre d'images collectées(Changement facultatif)
image_count = 1100
#Nombre de détections de visage réussies(Spécifiez 0 par défaut)
face_detect_count = 0
#Lorsqu'un visage est détecté à partir des données d'image collectées, coupez-le et enregistrez-le.
for i in range(image_count):
file_name = input_data_path + str(i) + ".jpg "
if os.path.isfile(file_name):
img = cv2.imread(file_name, cv2.IMREAD_COLOR)
assert img is not None, Path(file_name).absolute()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face = faceCascade.detectMultiScale(gray, 1.1, 3)
if len(face) > 0:
for rect in face:
#Entourez la partie de reconnaissance faciale d'une ligne rouge et enregistrez(Je n'ai pas besoin de cette partie maintenant)
# cv2.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (0, 0,255), thickness=1)
# cv2.imwrite('detected.jpg', img)
x = rect[0]
y = rect[1]
w = rect[2]
h = rect[3]
cv2.imwrite(save_path + '{nom de fichier}' + str(face_detect_count) + '.jpg', img[y:y+h, x:x+w])
face_detect_count = face_detect_count + 1
else:
print('image' + str(i) + ':No Face')
else:
print('image' + str(i) + ':No File')
python face_detect.py
--trouver et rechercher haarcascade_frontalface_default.xml. --Il existe certains fichiers dont les images ne peuvent pas être lues correctement. Il y en a pas mal. --Il existe des fichiers dont vous pouvez lire l'image mais qui ne peuvent pas bien extraire le visage, veuillez donc les supprimer à la main.
Recommended Posts