Je souhaite implémenter la reconnaissance faciale avec TensorFlow. Je souhaite découper un visage d'une image pour collecter et normaliser les données de visage
Mémorandum sérieux
jupyter notebook OpenCV3.0 Python3.5
Placez Lena et haarcascade_frontalface_alt.xml dans le même répertoire que le fichier .py, ou réécrivez le chemin.
trimming.py
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
#Chargement d'image
src_image = cv2.imread('lenna.jpeg')
#Convertir en échelle de gris
dst_image = cv2.cvtColor(src_image,cv2.COLOR_RGB2GRAY)
#Haar-comme le classificateur lu
cascade=cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
#Stocker les informations de coordonnées du visage détecté en cascade dans facerect
#[Coordonnée X supérieure gauche du quadrilatère,Coordonnée Y supérieure gauche du quadrilatère,Longueur de l'image du visage dans la direction de l'axe X,Longueur de l'image du visage dans la direction de l'axe Y]Je suis inquiet si c'est ici
facerect = cascade.detectMultiScale(dst_image, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))
#Lorsqu'un ou plusieurs visages sont détectés
if len(facerect) > 0:
for rect in facerect:
dst_image = dst_image[rect[1]:rect[1]+rect[3],rect[0]:rect[0]+rect[2]]
#Lorsqu'aucun visage n'est détecté
else:
print("no face")
#Lorsque cela est fait, cela devient une échelle de gris. Mystère
dst_image = cv2.cvtColor(dst_image,cv2.COLOR_GRAY2RGB)
plt.imshow(dst_image)
Lors de l'affichage d'une image couleur lue par imread () en échelle de gris avec imshow (), Il semble que vous deviez passer du RVB au gris avec cvtColor, puis du gris au RVB avec cvtColor à nouveau. Peut-être
J'ajouterai ce domaine dès que je le comprendrai.
Vous ne pouvez pas sauver ça, non? Voilà pourquoi J'ai créé un mécanisme pour couper et enregistrer. Dites adieu à Jupyter Je travaille sur PyCharm. pycharm pratique
trimming.py
import cv2
cascade_path = "./haarcascades/haarcascade_frontalface_alt.xml"
origin_image_path = "Chemin du dossier d'image"
dir_path = "Chemin de destination de l'enregistrement de l'image"
i = 0
for line in open('Chemin du fichier texte','r'):
line = line.rstrip()
print(line)
image = cv2.imread(origin_image_path+line,0)
if image is None:
print('Not open : ',line)
quit()
cascade = cv2.CascadeClassifier(cascade_path)
facerect = cascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=1, minSize=(10, 10))
if len(facerect) > 0:
for rect in facerect:
#Découpez seulement le visage et enregistrez
x = rect[0]
y = rect[1]
width = rect[2]
height = rect[3]
dst = image[y:y + height, x:x + width]
save_path = dir_path + '/' + 'image(' + str(i) + ')' + '.jpg'
#Enregistrer les résultats de la reconnaissance
cv2.imwrite(save_path, dst)
print("save!")
i += 1
print("Finish")
Vous pouvez écrire ligne par ligne dans le texte en faisant `` $ ls> hoge.txt '' dans le dossier contenant les images. Tout en lisant le nom de l'image écrite, ouvrez-la, coupez-la et enregistrez-la.
rstrip () L'image ne peut pas être lue pour une raison quelconque à moins qu'elle ne soit mordue. .. ..
Mais n'est-ce pas quelque chose comme redimensionner l'image? (Continuer)
Découpez une partie de la statue et économisez http://clngn.hatenablog.com/entry/20120113/1326442326 Jouez avec Python -part1- (Reconnaissance faciale avec OpenCV) http://www.takunoko.com/blog/python%E3%81%A7%E9%81%8A%E3%82%93%E3%81%A7%E3%81%BF%E3%82%8B-part1-opencv%E3%81%A7%E9%A1%94%E8%AA%8D%E8%AD%98/
Recommended Posts