C++ OpenCV SVM HOG检测器SVM.predict()异常

C++ OpenCV SVM HOG检测器SVM.predict()异常,c++,opencv,svm,descriptor,C++,Opencv,Svm,Descriptor,我正在使用Visual studio 2013和OpenCV 2.4.11 我用正样本和负样本的XML文件训练svm。 下面是我想与一些图像进行比较的代码。构建是可以的,但是当我运行debug时,它在svm.predict()上是中断的 未处理的异常:在CONSOLAPPLIALATION2.EXE中的0x000 FFF43148A5C:微软C++异常:CV::内存位置0x000,Af2D16ECA0.< 在支持向量机附近存在局部变量 信息不可用,没有为opencv_ml2411d.dll加载符

我正在使用Visual studio 2013和OpenCV 2.4.11 我用正样本和负样本的XML文件训练svm。 下面是我想与一些图像进行比较的代码。构建是可以的,但是当我运行debug时,它在svm.predict()上是中断的

未处理的异常:在CONSOLAPPLIALATION2.EXE中的0x000 FFF43148A5C:微软C++异常:CV::内存位置0x000,Af2D16ECA0.< 在支持向量机附近存在局部变量

信息不可用,没有为opencv_ml2411d.dll加载符号

有什么想法或线索吗

void compare()
{

    //variables  
    char FullFileName[100];
    char FirstFileName[100] = "E:\Dropbox/DIP/Images/Train/";  
    int FileNum = 5; //262;  

    //Load trained SVM xml data  

    CvSVM svm;
    svm.load("E:/Dropbox/DIP/Images/Train/trainedSVM.xml");

    //count variable  
    int nnn = 0, ppp = 0;

    for (int i = 1; i< FileNum; ++i)
    {
        sprintf_s(FullFileName, "%s%d.jpg", FirstFileName, i + 1);
        //printf("%s\n", FullFileName);  

        //read image file  
        Mat img, img_gray;
        img = imread(FullFileName);

        //resizing  
        resize(img, img, Size(64, 48)); //Size(32*2,16*2)); //Size(80,72) );   
        //gray  
        cvtColor(img, img_gray, CV_RGB2GRAY);

        //Extract HogFeature  
        HOGDescriptor d(Size(32, 16), Size(8, 8), Size(4, 4), Size(4, 4), 9);
        vector< float> descriptorsValues;
        vector< Point> locations;
        d.compute(img_gray, descriptorsValues, Size(0, 0), Size(0, 0), locations);
        //vector to Mat  
        Mat fm = Mat(descriptorsValues);

        //Classification whether data is positive or negative   HERE COME PROBLEM
        int result = svm.predict(fm); //svm.predict(fm);
        printf("%s - > %d\n", FullFileName, result);

        //Count data  
        if (result == 1)
            ppp++;
        else
            nnn++;

        //show image  
        imshow("origin", img);

        waitKey(5);
    }

    printf(" positive/negative = (%d/%d) \n", ppp, nnn);
}
void比较()
{
//变数
char-FullFileName[100];
char FirstFileName[100]=“E:\Dropbox/DIP/Images/Train/”;
int FileNum=5;//262;
//加载训练好的SVM xml数据
支持向量机;
load(“E:/Dropbox/DIP/Images/Train/trainedSVM.xml”);
//计数变量
int nnn=0,ppp=0;
for(int i=1;i描述符值;
向量<点>位置;
d、 计算(img_gray、描述符值、大小(0,0)、大小(0,0)、位置);
//向量到Mat
Mat fm=Mat(描述符值);
//分类数据是正的还是负的问题就来了
int result=svm.predict(fm);//svm.predict(fm);
printf(“%s->%d\n”,完整文件名,结果);
//计数数据
如果(结果==1)
ppp++;
其他的
nnn++;
//显示图像
imshow(“起源”,img);
等待键(5);
}
printf(“正/负=(%d/%d)\n”,购买力平价,nnn);
}

您是否将
opencv_ml2411d.dll
放在与.exe相同的文件夹中,或者是否将dll文件夹添加到系统路径中?它位于系统路径中。。。我也在Foldera中尝试过你是否使用用vc12编译的OpenCV?