C++ OpenCV(CvHaarClassifierCascade*)cvLoad不';无法加载,无法加载xml文件
我正在尝试使用OpenCv 2.3进行人脸检测。我试图在我的项目中加载“haarcascade_frontalface_alt_tree.xml”,但始终无法加载xml文件C++ OpenCV(CvHaarClassifierCascade*)cvLoad不';无法加载,无法加载xml文件,c++,opencv,face-detection,C++,Opencv,Face Detection,我正在尝试使用OpenCv 2.3进行人脸检测。我试图在我的项目中加载“haarcascade_frontalface_alt_tree.xml”,但始终无法加载xml文件 CvHaarClassifierCascade * pCascade = 0; // the face detector const char* file ="C:\OpenCV2.3\opencv\data\haarcascades\haarcascade_frontalface_alt_tree
CvHaarClassifierCascade * pCascade = 0; // the face detector
const char* file ="C:\OpenCV2.3\opencv\data\haarcascades\haarcascade_frontalface_alt_tree.xml" ;
pCascade = (CvHaarClassifierCascade*) cvLoad(file , NULL, NULL, NULL);
if (!pCascade) {
exit(-1); // unable to load xml
}
我相信我正经历着和你一样的问题
我尝试在cvLoad命令之前加载一个图像,但没有帮助
我使用的是OpenCV 2.3,我的配置就是这样
我正在使用这些库(我假设我的配置是正确的,文件存在并且可以使用Notepad++打开)
#包括
#包括“opencv2\opencv.hpp”
#包括“cv.h”
#包括“highgui.h”
//#包括“cvaux.h”
使用名称空间cv;
#pragma注释(lib,“opencv_core230d.lib”)
#pragma注释(lib,“opencv_highgui230d.lib”)
//#pragma注释(lib,“opencv_contrib230d.lib”)
//#pragma注释(lib,“opencv_calib30d.lib”)
//#pragma注释(lib,“opencv_features2d230d.lib”)
//#pragma注释(lib,“opencv_flann230d.lib”)
//#pragma注释(lib,“opencv_gpu230d.lib”)
#pragma注释(lib,“opencv\u haartraining\u engined.lib”)
#pragma注释(lib,“opencv_imgproc230d.lib”)
//#pragma注释(lib,“opencv_legacy230d.lib”)
//#pragma注释(lib,“opencv_ml230d.lib”)
//#pragma注释(lib,“opencv_objdetect230d.lib”)
//#pragma注释(lib,“opencv\u video230d.lib”)
要缩小问题范围,在调用cvLoad
之前,您应该检查文件是否存在。这里有一个方法:
struct stat buf;
int statResult = stat(file,&buf);
if (statResult || buf.st_ino < 0) {
cout << "File not found: " << file << endl;
exit(-2);
}
我认为您使用的是过时的OpenCV 1教程,与当前版本的
haarcascade\u frontalface\u alt\u tree.xml
不兼容。试试看。该教程中的代码适用于我:
CascadeClassifier face_cascade;
if (!face_cascade.load( file) ) {
cout << "Couldn't load face_cascade" << endl;
exit(-1);
}
cout << "Loaded face_cascade" << endl;
cascade分类器面_cascade;
如果(!face_cascade.load(file)){
cout要缩小问题范围,在调用cvLoad
之前,您应该检查文件是否存在。以下是一种方法:
struct stat buf;
int statResult = stat(file,&buf);
if (statResult || buf.st_ino < 0) {
cout << "File not found: " << file << endl;
exit(-2);
}
我认为您使用的是过时的OpenCV 1教程,该教程不适用于当前版本的haarcascade\u frontalface\u alt\u tree.xml
。请尝试使用。该教程中的代码适用于我:
CascadeClassifier face_cascade;
if (!face_cascade.load( file) ) {
cout << "Couldn't load face_cascade" << endl;
exit(-1);
}
cout << "Loaded face_cascade" << endl;
cascade分类器面_cascade;
如果(!face_cascade.load(file)){
这在我身上也发生过,但最后我想我发现了问题所在
OpenCV有两个不同的库*d.lib和*.lib。d表示调试
问题是您需要在适当的模式下为您的环境(在我的情况下是vs)设置适当的库
d、 调试时使用lib,发布时使用.lib
在我的项目中,我还需要在发布模式下运行它,以使其正常工作:)
我的vs2009中的此设置可以在属性、链接器、输入和其他依赖项下找到
最诚挚的问候这也发生在我身上,但最后我想我发现了问题所在
OpenCV有两个不同的库*d.lib和*.lib。d表示调试
问题是您需要在适当的模式下为您的环境(在我的情况下是vs)设置适当的库
d、 调试时使用lib,发布时使用.lib
在我的项目中,我还需要在发布模式下运行它,以使其正常工作:)
我的vs2009中的此设置可以在属性、链接器、输入和其他依赖项下找到
问候您检查带有“haarcascade\u frontalface\u alt.xml”文件名的字符串是否正确。
我遇到了这个问题,无法识别目录分隔符。我将“\”字符改为“/”,教程正常运行。
请注意,我使用的MacOS 10.8.3与Windows 7、Visual Studio 2012和opencv 2.44并行运行-我使用的是教程的第2版请检查带有“haarcascade\u frontalface\u alt.xml”文件名的字符串是否正确。
我遇到了这个问题,无法识别目录分隔符。我将“\”字符改为“/”,教程正常运行。
请注意,我使用的MacOS 10.8.3与Windows 7、Visual Studio 2012和opencv 2.44并行运行-我使用的是教程的第2版我希望OP能够评论您的哪些解决方案回答了他的问题。我希望OP能够评论您的哪些解决方案回答了他的问题。您是如何使用该库的?可以吗你能再解释一下吗?你是如何使用图书馆的?你能再解释一下吗?