在使用 python-opencv进行人脸识别时可能会遇到下面的错误:
Traceback (most recent call last):
File "E:/python/test/test.py", line 8, in <module>
fa = face_detector.detectMultiScale(gray, 1.1, 3)
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-6uw63ony\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'
出现这个的原因很简单,下面这个语句:
face_detector = cv2.CascadeClassifier(impath)
里面impath路径的xml文件路径不对,应该将路径改为全局路径:
因此要查找这个文件的位置,官方文档中说明人脸识别训练集文件haarcascade_frontalface_default.xml在python-opencv包的/data文件夹下,因此只要找到python-opencv的包在哪里就可以了,运行下面的代码:
import cv2 as cv
print(cv.__file__)
运行代码,我显示如下内容:
D:\2021\Python3.6\lib\site-packages\cv2\cv2.cp36-win_amd64.pyd
于是,我应该在D:\2021\Python3.6\Lib\site-packages\cv2路径下找到\data文件夹,其中有人脸识别的训练集haarcascade_frontalface_default.xml.
于是路径我的路径应改为如下的全局路径表示:
D:\2021\Python3.6\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml
再次运行就没有问题啦!