你好,我正在尝试创建一个面部识别程序,但是出现一个特殊的错误: 这是我的代码:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier("lbpcascade_frontalface.xml")
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5);
这是输出错误
SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set
我在工作目录中有“ lbpcascade_frontalface.xml”,所以这不应该成为问题
如果我输入时有帮助
cv2.__version__
我知道
'4.0.0'
答案 0 :(得分:4)
结果证明,我不需要下载另一个文件并使用它,因为opencv附带了这点代码,
cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
答案 1 :(得分:1)
好吧,我也遇到了同样的问题,因为@TylerStrouth提到此代码段不起作用:
cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
因为如果您以标准pip install opencv-python
或sudo apt-get install python3-opencv
您将收到类似于this stackoverflow question的错误,其中提到的解决方案对我有用,也就是说,如果您使用的是python3,则还需要安装 opencv-contrib-python < / em>,然后再运行上述代码段。
pip install opencv-contrib-python
具有完整的软件包(包含main modules and contrib/extra modules)
答案 2 :(得分:0)
如opencv上@TylerStrouth所解释的,在该目录下有可用的层叠文件级联目录,在Ubuntu 16.04上运行人脸检测代码并遇到以下问题时,我也遇到了相同的问题
使用以下方式获取opencv的位置
opencv在哪里
矿井位于/ usr / share / opencv
检查级联是否存在于该位置,并将该位置复制到cv2.CascadeClassifier中,并粘贴所需的haarcascade
答案 3 :(得分:0)
我以相同的方式遇到了相同的问题。 我正在使用Jupiter Notebook执行代码here
在使用以下方式加载此文件时,我从here复制了XML文件,并在当前的Jupiter目录中创建了XML文件:
classifier = CascadeClassifier('haarcascade_frontalface_default.xml')
它返回了我错误:
SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set
所以,我尝试了另一种方法,删除了该文件,然后将实际文件以XML格式下载到当前目录中,从而解决了我的问题。
答案 4 :(得分:0)
当我使用hogcascade_pedestrians.xml
从本地视频中检测到行人并且我正在读取hogcascade_pedestrians.xml
时,我遇到了相同的错误,
pedestrainsClassifier = cv2.CascadeClassifier("hogcascade_pedestrians.xml")
您应该阅读以下内容:
pedestrainsClassifier = cv2.CascadeClassifier(f"{cv2.data.haarcascades}hogcascade_pedestrians.xml")
或者,您也可以执行以下操作:
pedestrainsClassifier = cv2.CascadeClassifier(cv2.data.haarcascades +"hogcascade_pedestrians.xml")
祝你好运
答案 5 :(得分:0)
按如下方式更改您的代码,这对我有用
har_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +'har.xml')