# 本文件是用来从Photos写真美图文件夹中,用opencv自带的人脸识cascade别出脸部并截图保存到Faces文件夹中 # 在opencv的自带人脸检测中,haarcascade_frontalface_alt效果最好,缺点是时间长 def detect(filename, cascade_file = "E:/installation/OpenCV/opencv/build/etc/haarcascades/haarcascade_frontalface_alt.xml"): if not os.path.isfile(cascade_file): raise RuntimeError("%s: not found" % cascade_file) # 这里确认找到cascades识别器,找不到显示not found,地址请根据你的自己安装位置修改一下 cascade = cv2.CascadeClassifier(cascade_file) image = cv2.imread(filename) # 读取图片 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 获取图片的灰度图 gray = cv2.equalizeHist(gray) faces = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(48, 48)) # 识别脸部 for i, (x, y, w, h) in enumerate(faces): # 定义脸部在图像上的坐标 face = image[y: y + h, x:x + w, :] # 获取坐标位置的图 face = cv2.resize(face, (96, 96)) # 重新定义大小 save_filename = '%s-%d.jpg' % (os.path.basename(filename).split('.')[0], i) # 定义保存图片的地址 cv2.imwrite("Faces/" + save_filename, face) # 保存图片 if __name__ == '__main__': if os.path.exists('Faces') is False: os.makedirs('Faces') # 检查Faces文件夹,没有就创建一个 file_list = glob('Photos/*.jpg') for filename in file_list: detect(filename)
代码运行出现以下问题:
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv::cvtColor, file C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp, line 11048 Traceback (most recent call last): File "D:/Users/pycharm/BeautifulGirls/TakeImgFace.py", line 49, in <module> detect(filename) File "D:/Users/pycharm/BeautifulGirls/TakeImgFace.py", line 22, in detect gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:11048: error: (-215) scn == 3 || scn == 4 in function cv::cvtColor Process finished with exit code 1
该怎么解决啊,求帮助