问题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问题OpenCV(4.5.4) Error: Assertion failed (empty()) in cv::CascadeClassifier::detectMultiScale的解决_第1张图片

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

 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)

你可能感兴趣的:(opencv,c++,图像处理)