――Sie können es ausführen, ohne die Eigenschaften von OpenCV so gut zu kennen, aber der Schlüssel ist, ob OpenCV normal gelesen werden kann.
face_detect.py
# -*- coding:utf-8 -*-
import cv2
import numpy as np
import os.path
from pathlib import Path
#Verzeichnis mit den zuvor gesammelten Bilddaten
input_data_path = '{Verzeichnispfad}'
#Verzeichnis zum Speichern des zugeschnittenen Bildes
save_path = '{Verzeichnispfad}'
#Zielverzeichnis erstellen
Path(save_path).mkdir(parents=True, exist_ok=True)
#OpenCV-Standardklassifizierungspfad.(https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.Verwenden Sie eine XML-Datei)
cascade_path = '/usr/local/Cellar/opencv3/3.2.0/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascade_path)
#Anzahl der gesammelten Bilder(Optionale Änderung)
image_count = 1100
#Anzahl erfolgreicher Gesichtserkennungen(Geben Sie standardmäßig 0 an)
face_detect_count = 0
#Wenn aus den gesammelten Bilddaten ein Gesicht erkannt wird, schneiden Sie es aus und speichern Sie es.
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:
#Umgeben Sie den Gesichtserkennungsteil mit einer roten Linie und speichern Sie(Ich brauche diesen Teil jetzt nicht)
# 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 + '{Dateiname}' + 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
--finde und suche nach haarcascade_frontalface_default.xml.
Recommended Posts