OpenCV 4.0.0 SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set
OpenCV 4.0.0 SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set
你好,我正在尝试创建一个面部识别程序,但我遇到了一个奇怪的错误:
这是我的代码:
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'
新答案
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")
正如上面@TylerStrouth 所解释的那样,opencv 有一个级联目录,其中级联文件可用,我也遇到了同样的问题,而 运行 Ubuntu 16.04 上的人脸检测代码和解决方法如下
使用
获取opencv的位置
whereis opencv
我的在 /usr/share/opencv
检查级联是否存在于该位置并复制粘贴 cv2.CascadeClassifier 中的位置以及所需的 haarcascade
我遇到过同样的问题,但方式略有不同。
我正在使用 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 格式的实际文件,这解决了我的问题。
好吧,我遇到了同样的问题,因为@TylerStrouth 提到这个代码片段不起作用:
cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
因为如果你刚刚以pip install opencv-python
或sudo apt-get install python3-opencv
[=16=的标准格式安装opencv,数据目录中没有haarcascades文件]
你会得到一个类似于 this Whosebug question 的错误,其中提到的解决方案对我有用,也就是说,如果你使用 python3 那么你还需要安装 opencv-contrib-python 在 运行 上面的代码片段之前。
pip install opencv-contrib-python
有完整的包装(包含两个 main modules and contrib/extra modules)
当我使用 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")
祝你好运
按如下方式更改您的代码,这对我有用
har_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +'har.xml')
在版本 3.4.9.33
的 opencv-python (pip show opencv-python
, Windows) 下行工作正常:trained_face_data = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
你好,我正在尝试创建一个面部识别程序,但我遇到了一个奇怪的错误: 这是我的代码:
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'
新答案
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")
正如上面@TylerStrouth 所解释的那样,opencv 有一个级联目录,其中级联文件可用,我也遇到了同样的问题,而 运行 Ubuntu 16.04 上的人脸检测代码和解决方法如下
使用
获取opencv的位置whereis opencv
我的在 /usr/share/opencv
检查级联是否存在于该位置并复制粘贴 cv2.CascadeClassifier 中的位置以及所需的 haarcascade
我遇到过同样的问题,但方式略有不同。 我正在使用 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 格式的实际文件,这解决了我的问题。
好吧,我遇到了同样的问题,因为@TylerStrouth 提到这个代码片段不起作用:
cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
因为如果你刚刚以pip install opencv-python
或sudo apt-get install python3-opencv
[=16=的标准格式安装opencv,数据目录中没有haarcascades文件]
你会得到一个类似于 this Whosebug question 的错误,其中提到的解决方案对我有用,也就是说,如果你使用 python3 那么你还需要安装 opencv-contrib-python 在 运行 上面的代码片段之前。
pip install opencv-contrib-python
有完整的包装(包含两个 main modules and contrib/extra modules)
当我使用 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")
祝你好运
按如下方式更改您的代码,这对我有用
har_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +'har.xml')
在版本 3.4.9.33
的 opencv-python (pip show opencv-python
, Windows) 下行工作正常:trained_face_data = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')