8

您好我正在尝试创建一个面部识别程序,但我有一个特殊的错误:这是我的代码:

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'
4

7 回答 7

30

新答案 OpenCV 现在似乎有一个专门用于级联的目录,它们被放置在data其中,我现在在教程中看到类似的东西 haar_cascade_face = cv2.CascadeClassifier('data/haarcascade/haarcascade_frontalface_default.xml') 你可能必须找到data你的机器上的位置或我的工作上面的位置。自从我在 2019 年初完成这个项目以来,我还没有接触过这个项目。请记住,如果您想将 Haar 的 Cascade 用于作为单独文件的眼睛,这仅适用于正面。

旧答案 原来我不需要下载另一个文件并使用它,因为 opencv 附带了这一点代码

cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
于 2019-01-20T06:19:50.310 回答
3

好吧,我遇到了同样的问题,因为@TylerStrouth 提到此代码段不起作用:

cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")

因为如果您刚刚以标准格式安装了opencvpip install opencv-python ,则数据目录中没有 haarcascades 文件或sudo apt-get install python3-opencv

您将收到类似于此 stackoverflow question的错误,其中提到的解决方案对我有用,也就是说,如果您使用的是 python3,那么您还需要在运行上述代码片段之前安装opencv-contrib-python 。

pip install opencv-contrib-python

它具有完整的软件包(包含主要模块和 contrib/extra 模块

于 2020-10-07T07:08:23.137 回答
1

如下更改您的代码,这对我有用

har_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +'har.xml')

于 2021-04-25T03:14:27.383 回答
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")

祝你好运

于 2020-12-10T15:26:56.553 回答
0

我以不同的方式遇到了同样的问题。我在这里使用 Jupiter notebook 执行代码

我从这里复制了 XML 文件并在当前 Jupiter 目录中创建了一个 XML 文件,当使用以下加载这些文件时:

classifier = CascadeClassifier('haarcascade_frontalface_default.xml')

它返回给我错误:

SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set

所以,我尝试了其他方式,删除了这个文件,并将实际文件下载为当前目录中的 XML 格式,这解决了我的问题。

于 2020-09-27T05:02:00.840 回答
0

正如上面@TylerStrouth 所解释的,opencv 有一个级联目录,其中级联文件可用,我在 Ubuntu 16.04 上运行人脸检测代码时也遇到了同样的问题,并解决如下

  1. 使用获取opencv的位置

    opencv在哪里

  2. 我的在 /usr/share/opencv

  3. 检查该位置是否存在级联,并将该位置与所需的 haarcascade 一起复制粘贴到 cv2.CascadeClassifier

于 2020-05-30T13:30:15.553 回答
0

3.4.9.33opencv-python ( pip show opencv-python, Windows) 版本上,以下行工作正常:trained_face_data = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

于 2021-11-03T21:29:59.787 回答