OpenCV 4.0.0 SystemError:<class'cv2.cascadeclassifier'=“”>返回带有错误集的结果

时间:2019-01-20 02:21:24

标签: python opencv cv2 facial-identification

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

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'

6 个答案:

答案 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-pythonsudo apt-get install python3-opencv

的格式安装 opencv ,则数据目录中没有haarcascades文件

您将收到类似于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上运行人脸检测代码并遇到以下问题时,我也遇到了相同的问题

  1. 使用以下方式获取opencv的位置

    opencv在哪里

  2. 矿井位于/ usr / share / opencv

  3. 检查级联是否存在于该位置,并将该位置复制到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')