Ich möchte die Gesichtserkennung mit TensorFlow implementieren. Ich möchte ein Gesicht aus einem Bild zuschneiden, um Gesichtsdaten zu sammeln und zu normalisieren
Ernstes Memorandum
jupyter notebook OpenCV3.0 Python3.5
Legen Sie Lena und haarcascade_frontalface_alt.xml im selben Verzeichnis wie die .py-Datei ab oder schreiben Sie den Pfad neu.
trimming.py
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
#Bild wird geladen
src_image = cv2.imread('lenna.jpeg')
#In Graustufen konvertieren
dst_image = cv2.cvtColor(src_image,cv2.COLOR_RGB2GRAY)
#Haar-wie Klassifikator lesen
cascade=cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
#Speichern Sie die Koordinateninformationen des Gesichts, die durch Kaskadierung in Facerect erkannt wurden
#[Obere linke X-Koordinate des Vierecks,Oben links Y-Koordinate des Vierecks,Länge des Gesichtsbildes in Richtung der X-Achse,Länge des Gesichtsbildes in Richtung der Y-Achse]Ich mache mir Sorgen, wenn es hier ist
facerect = cascade.detectMultiScale(dst_image, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))
#Wenn ein oder mehrere Gesichter erkannt werden
if len(facerect) > 0:
for rect in facerect:
dst_image = dst_image[rect[1]:rect[1]+rect[3],rect[0]:rect[0]+rect[2]]
#Wenn kein Gesicht erkannt wird
else:
print("no face")
#Wenn dies erledigt ist, wird es Graustufen. Geheimnis
dst_image = cv2.cvtColor(dst_image,cv2.COLOR_GRAY2RGB)
plt.imshow(dst_image)
Wenn Sie ein von imread () gelesenes Farbbild in Graustufen mit imshow () anzeigen, Es scheint, dass Sie mit cvtColor von RGB zu Grau und dann mit cvtColor wieder von Grau zu RGB wechseln müssen. Vielleicht
Ich werde diesen Bereich hinzufügen, sobald ich ihn verstehe.
Das kannst du doch nicht retten, oder? Deshalb Ich habe einen Mechanismus zum Trimmen und Speichern erstellt. Verabschieden Sie sich von Jupiter Ich arbeite an PyCharm. Pycharm bequem
trimming.py
import cv2
cascade_path = "./haarcascades/haarcascade_frontalface_alt.xml"
origin_image_path = "Pfad des Bildordners"
dir_path = "Zielpfad zum Speichern von Bildern"
i = 0
for line in open('Pfad der Textdatei','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:
#Schneiden Sie nur das Gesicht aus und speichern Sie
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'
#Erkennungsergebnisse speichern
cv2.imwrite(save_path, dst)
print("save!")
i += 1
print("Finish")
Sie können Zeile für Zeile in den Text schreiben, indem Sie in dem Ordner, der die Bilder enthält, `` `$ ls> hoge.txt``` ausführen. Öffnen Sie beim Lesen des Namens des geschriebenen Bildes das Bild, schneiden Sie es zu und speichern Sie es.
rstrip () Das Bild kann aus irgendeinem Grund nur gelesen werden, wenn es gebissen wurde. .. ..
Aber ist das nicht so etwas wie die Größe des Bildes zu ändern? (Fortsetzen)
Schneiden Sie einen Teil der Statue aus und speichern Sie http://clngn.hatenablog.com/entry/20120113/1326442326 Spielen Sie mit Python -part1- (Gesichtserkennung mit 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