我正在尝试创建自己的SVM分类器,并且我一开始就陷入困境。我有两组正负图像数据,我想创建训练矩阵,将其传递给SVM。所以我读了this基本帖子,并尝试按照它说的那样做:
char* path_positive, path_negative;
int numPos, numNeg;
int imageWidth=130;
int imageHeight=160;
numPos= 176;
numNeg= 735;
path_positive= "C:\\SVM\\positive\\";
path_negative= "C:\\SVM\negative\\";
Mat classes(numPos+numNeg, 1, CV_32FC1);
Mat trainingMat(numPos+numNeg, imageWidth*imageHeight, CV_32FC1 );
vector<int> trainingLabels;
for(int file_num=0; file_num < numPos; file_num++)
{
stringstream ss(stringstream::in | stringstream::out);
ss << path_positive << file_num << ".jpg";
Mat img = imread(ss.str(), CV_LOAD_IMAGE_GRAYSCALE);
int ii = 0; // Current column in training_mat
for (int i = 0; i<img.rows; i++) {
for (int j = 0; j < img.cols; j++) {
trainingMat.at<float>(file_num,ii++) = trainingMat.at<uchar>(i,j);
}
}
trainingLabels.push_back(1);
}
但是当我启动这段代码时,我得到了Assertation failderror: 我知道,我犯了一些愚蠢的错误,因为我对openCV很新。 谢谢你的帮助。
编辑:此错误发生在: trainingMat.at(file_num,ii ++)= trainingMat.at(i,j);