Il était assez difficile de collecter les images des visages des gens nécessaires à l'apprentissage automatique, j'ai donc créé un script pour réduire un peu la charge de travail.
Installez avec la commande suivante. Au fait, c'est pour Python 2.7.
python
$ sudo apt install libopencv-dev python-opencv
Si vous spécifiez l'URL de l'image de la photo de groupe, l'image sera téléchargée depuis Internet, la détection de visage sera effectuée et l'image du résultat de la détection sera enregistrée.
Chargez la bibliothèque que vous souhaitez utiliser.
python
import cv2
import sys
from PIL import Image
import urllib
import os
Créez des dossiers pour enregistrer les images pour la détection et les résultats.
python
if os.path.exists("input") == False:
os.mkdir("input")
if os.path.exists("output") == False:
os.mkdir("output")
Enregistre l'image de l'URL spécifiée dans le dossier d'entrée. Il obtient également le nom du fichier image à partir de l'URL.
python
url = "http://hoge.com/photo.jpg "
#Obtenir le nom du fichier
tmp = url.split("/")
imgname = tmp[len(tmp)-1]
imgpath = "input/" + imgname
#Télécharger les données d'image
response = urllib.urlopen(url)
with open(imgpath, "wb") as fout:
fout.write(response.read())
S'il est en couleur, le traitement prend du temps, alors convertissez-le en échelle de gris.
python
#Lecture des données d'image
image = cv2.imread(imgpath)
#Conversion de l'échelle de gris
image_gray = cv2.cvtColor(image, cv2.cv.CV_BGR2GRAY)
Lit et détecte les données entraînées pour la détection des visages.
python
#Désignation du classificateur HAAR
cascade_path = "haarcascades/haarcascade_frontalface_alt.xml"
#Acquérir la quantité de caractéristiques du classificateur en cascade
cascade = cv2.CascadeClassifier(cascade_path)
#Processus de détection
faces = cascade.detectMultiScale(image_gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))
print "Résultat de la détection",len(faces),"Homme"
Coupez l'image du visage à partir des données d'image avant de la convertir en échelle de gris et enregistrez-la. À ce stade, redimensionnez la taille de l'image à 50 x 50 afin qu'elle soit facile à utiliser dans l'apprentissage automatique.
python
img = Image.open(imgpath)
for i in range(len(faces)):
[x,y,w,h] = faces[i]
imgCroped = img.crop((x,y,x+w,y+h)).resize((50, 50))
filename = "output/%s_%02d.jpg " % (imgname.split(".")[0], i)
imgCroped.save(filename)
l'a fait! !! Certaines choses autres que le visage sont détectées, mais généralement satisfaites (^ - ^)
Si vous demandez à Google Sensei une "photo de groupe", vous verrez un grand nombre de photos haute résolution. J'ai été un peu surpris.
Recommended Posts