OpenCV est une bibliothèque open source qui peut être utilisée pour le traitement d'images. Il peut également être utilisé en Python, donc il peut également être utilisé dans l'apprentissage automatique. Cette fois, je vais essayer la reconnaissance faciale en utilisant cet OpenCV.
Cet environnement d'exploitation
Chargez l'image, reconnaissez le visage dans l'image et affichez les coordonnées et la taille du visage. Après cela, le visage reconnu s'affiche sous la forme d'un carré rouge. OpenCV a plusieurs fichiers de données de fonctionnalités (fichiers en cascade) qui peuvent être utilisés pour la reconnaissance faciale. Cette fois, nous utiliserons
haarcascade_frontalface_alt.xml '' comme fichier de données qui reconnaît le visage face à l'avant. De plus, cette fois, nous reconnaîtrons l'utilisation de l'image suivante (`` before.jpg '' dans le code source).
Source de référence: https://www.pakutaso.com/assets_c/2016/03/SAYA151005380I9A8403-thumb-autox1600-21549.jpg
front_face.py
#coding: utf-8
import cv2
cascade_file = "haarcascade_frontalface_alt.xml"
image_file = "before.jpg "
img = cv2.imread(image_file)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cascade = cv2.CascadeClassifier(cascade_file)
face_list = cascade.detectMultiScale(img_gray, minSize=(150, 150))
if len(face_list) == 0:
print("Fail recognise")
quit()
for (x, y, w, h) in face_list:
print("Coordonnées de la face=", x, y, w, h)
color = (0, 0, 225)
pen_w = 8
cv2.rectangle(img, (x, y), (x+w, y+h), color, thickness = pen_w)
cv2.imwrite("after.jpg ", img)
Quand je l'ai exécuté, j'ai eu l'erreur suivante.
OpenCV Error: Assertion failed (!empty()) in detectMultiScale, file /home/travis/miniconda/conda-bld/conda_1486587069159/work/opencv-3.1.0/modules/objdetect/src/cascadedetect.cpp, line 1639
Traceback (most recent call last):
File "face_front.py", line 11, in <module>
face_list = cascade.detectMultiScale(img_gray, minSize=(150, 150))
cv2.error: /home/travis/miniconda/conda-bld/conda_1486587069159/work/opencv-3.1.0/modules/objdetect/src/cascadedetect.cpp:1639: error: (-215) !empty() in function detectMultiScale
--Cause
Quand je l'ai recherché, cela semble être une erreur causée par le mauvais chemin du fichier en cascade.
En guise de premiers secours, j'ai pu copier ce fichier en cascade dans le répertoire contenant le code source et l'utiliser.
Le résultat de l'exécution est l'image suivante.
De l'installation d'OpenCV3.1 sur Ubuntu16.04 LTS au test de reconnaissance faciale
Recommended Posts