Я новичок в Python и OpenCV, я хочу обрезать изображения лиц из моих входных изображений. Я действительно не знаю, где пошло не так, может кто-нибудь помочь мне исправить это?
Я думаю, что может быть что-то не так с каталогом входных изображений. Так что я изменил все '/' на '\', это все еще не правильно. Кроме того, в этом каталоге есть много подпапок, и в каждой подпапке есть несколько необработанных изображений.
import cv2
import os
def fetch_face_pic(img,face_cascade):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=10, minSize = (30, 30), flags = 0)
for(x, y, w, h) in faces:
crop = img[y:y+h, x:x+w]
return crop
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_defalut.xml')
#path_save = '/Users/oysdfx/Desktop/Face-anti-spoofing-master/crop/ImposterCrop'
path_read = '/Users/oysdfx/Desktop/Face-anti-spoofing-master/raw/ImposterRaw'
for file in os.listdir(path_read):
pic = os.path.join(path_read, file)
img = cv2.imread(pic)
crop = fetch_face_pic(img, face_cascade)
resized_img = cv2.resize(img, (64, 64), interpolation=cv2.INTER_CUBIC)
cv2.imwrite(pic, resized_img)
На самом деле я хочу вырезать лица из входных изображений и сохранить их в новой папке. Я не знаю, как это реализовать. Я запускаю этот кусок кода и получаю ошибку следующим образом:
Traceback (most recent call last):
File "/Users/oysdfx/Desktop/Undergraduate_Thesis/Face_Anti-Spoofing/crop_face.py", line 86, in <module>
crop = fetch_face_pic(img, face_cascade)
File "/Users/oysdfx/Desktop/Undergraduate_Thesis/Face_Anti-Spoofing/crop_face.py", line 70, in fetch_face_pic
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(3.4.2) /opt/concourse/worker/volumes/live/9523d527-1b9e-48e0-7ed0-a36adde286f0/volume/opencv-suite_1535558719691/work/modules/imgproc/src/color.hpp:253: error: (-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function 'CvtHelper'
Process finished with exit code 1