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