问题OpenCV(4.5.4) Error: Assertion failed (empty()) in cv::CascadeClassifier::detectMultiScale的解决

OpenCV(4.5.4) Error: Assertion failed (!empty()) in cv::CascadeClassifier::detectMultiScale, file C:\build\master_winpack-build-win64-vc14\opencv\modules\objdetect\src\cascadedetect.cpp, line 1689 异常的解决

文章记录我刚开始学习opencv遇到的问题和解决

主要问题出现不理解 haarcascade_frontalface_alt.xml 与 haarcascade_eye_tree_eyeglasses.xml 是什么,从哪里来

一开始照着书写人脸检测的代码是

    //初始化Haar级联人脸分类器XML
	face_cascade.load("haarcascade_frontalface_alt.xml");
	//初始化Harr级联人眼分类器XML
	eye_cascade.load("haarcascade_eye_tree_eyeglasses.xml");

然而未经处理的异常却出现在

face_cascade.detectMultiScale
	(frame_gray, faces, 1.1, 3, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));

以至于我花了很长的时间去检验上述代码的错误

在网上查找了许久的资料 排查了许多问题 最后发现问题出现在路径上

一开始查找的时候有人说这个东西是anaconda里面的,好在我一开始配置opencv环境变量时听说过这个方法,然而我是下载官网的opencv(不然我可能会因为不知道anaconda从而放弃这唯一能解决问题的机会,从而焦躁不安)

之后我就在我现在的opencv文件夹下一个一个翻找 最终查到了haarcascade_frontalface_alt.xml和haarcascade_eye_tree_eyeglasses.xml

以至于我兴奋的直接复制路径

 F:\OpenCV\opencv\sources\data\haarcascades 粘贴在了程序上

然而依旧报错

后来发现路径中的 '\' 通常需要使用 '\\'来表示

最终代码更改为这样

//初始化Haar级联人脸分类器XML
	face_cascade.load("F:\\OpenCV\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");
	//初始化Harr级联人眼分类器XML
	eye_cascade.load("F:\\OpenCV\\opencv\\sources\\data\\haarcascades\\haarcascade_eye_tree_eyeglasses.xml");

运行最终通过, 然后看到了舒展了的脸,这一个下午最终没有白费

立马写了我第一个文章为了之后出现同样问题的人不用纠结一下午(不过可能也只有我这种小白不明白xml是什么吧0.0)

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 错误信息:cv2.error: opencv(4.5.4) d:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:assertion failed) !empty() in function 'cv::cascadeclassifier::detectmultiscale' 错误原因:在使用OpenCV的级联分类器进行多尺度检测时,检测器为空。 解决方法:检查级联分类器是否正确加载,确保检测器不为空。可以尝试重新加载级联分类器或更换级联分类器文件。 ### 回答2: cv2.error: opencv(4.5.4) d:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:assertion failed) !empty() in function 'cv::cascadeclassifier::detectmultiscale' 这个错误代码意味着OpenCV在检测多组图像时无法找到一些级联分类器。通常这是由两种情况引起的,一是训练的级联分类器文件不存在或格式不正确,二是给定待检测图像的路径不正确。 如果是第一种情况,你需要重新检查级联分类器文件是否存在,路径是否正确,训练模型文件是否已经成功下载并存储到给定路径中。例如,如果你使用的是haarcascade_frontalface_default.xml文件,可以查看是否正确导入到你的代码中。正确的导入方法如下: face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 如果级联分类器文件路径无误,仍然报错,那么你可以尝试重新安装OpenCV并再次运行代码,这可以确保你的OpenCV和级联分类器文件都是最新的版本。 如果是第二种情况,检查待检测图像的路径是否正确,并确保图像大小符合级联分类器文件的要求。 总之,在运行OpenCV的过程中可能会遇到许多错误,包括上述的错误。你需要先尝试确定错因是从哪里来的,然后针对性的解决问题,如果问题仍然无法解决,你可以通过阅读OpenCV官方文档,或者向OpenCV社区或论坛求助,以获取更多的帮助和支持。 ### 回答3: 这个错误通常是在OpenCV导入级联分类器(cascades classifier)时出现的。这个错误的原因是级联分类器文件不存在或文件路径不正确。级联分类器通常用于对象检测,在计算机视觉中有很多应用,例如人脸检测、车辆检测等。因此,如果没有正确导入级联分类器,很难进行对象检测。 要解决这个错误,可以检查以下几个方面: 1.级联分类器文件是否存在。如果级联分类器文件不存在,可以尝试重新下载或在代码中使用绝对路径指定。也可以在OpenCV安装目录的data文件夹中查找级联分类器文件。 2.文件路径是否正确。如果级联分类器文件存在,但是路径不正确,可能会导致错误。确保在代码中正确指定级联分类器文件的路径。 3.OpenCV版本问题。这个错误可能与使用的OpenCV版本有关。如果使用的是旧版本,可能会出现一些错误。可以尝试升级OpenCV版本或在官方文档中查找更多信息。 总的来说,这个错误通常是由级联分类器文件路径不正确或文件不存在引起的。通过检查文件路径和OpenCV版本等问题,可以解决这个错误,并正常进行对象检测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值