使用cascade.load()在Opencv中加载级联分类器时出错!

时间:2012-12-11 16:43:49

标签: opencv opencvdotnet

我正在使用opencv示例中给出的facedetect.cpp代码。 但之后构建并运行错误是因为cascade.load(cascadeName)给出了一个错误,即返回零。 几天前它正在运作。突然间,这个错误开始出现了。 我也是XML文件的完整路径,但它没有用! 此命令用于运行代码的可执行文件:

`objectDetect --cascade="Full path to haarcascade_frontalface_alt.xml" --scale=1.3 %1`

XML文件的路径是正确的!! Kindly check this snap shot

#include <opencv2\objdetect\objdetect.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char* argv[]) {
string xmlArray[] = {
"D:/Visual Studio 2010/Projects/loadClassifierTest/haarcascades/haarcascade_eye.xml",
"D:/Visual Studio 2010/Projects/loadClassifierTest/haarcascades/haarcascade_eye_tree_eyeglasses.xml",
"D:/Visual Studio 2010/Projects/loadClassifierTest/haarcascades/haarcascade_frontalface_alt.xml",
"D:/Visual Studio 2010/Projects/loadClassifierTest/haarcascades/haarcascade_frontalface_alt2.xml",
"D:/Visual Studio 2010/Projects/loadClassifierTest/haarcascades/haarcascade_frontalface_alt_tree.xml",
"D:/Visual Studio 2010/Projects/loadClassifierTest/haarcascades/haarcascade_frontalface_default.xml",
"D:/Visual Studio 2010/Projects/loadClassifierTest/haarcascades/haarcascade_fullbody.xml"
};
CascadeClassifier cascade;
for (int i = 0; i < 6; ++i) {
    if (!cascade.load(xmlArray[i]))
        cerr << "Could not load " << xmlArray[i] << " !" << endl;
    else
        cout << xmlArray[i] << " has been loaded!" << endl;
}
return 0;
}

所有的xml文件都在同一个文件夹中....即使给出了完整的路径....他们没有加载......!我不认为有任何许可问题......

请帮忙!

1 个答案:

答案 0 :(得分:1)

您是否尝试过以这种方式传递绝对路径:

 String xmlFilePath = "c:/.../haarcascade_frontalface_alt.xml";

您的文件是否在具有读取权限的文件夹中?

它应该可以工作,否则问题就在你代码的另一个地方..