Я пытаюсь создать свой собственный классификатор SVM, и я застрял в начале. У меня есть два набора данных для положительных и отрицательных изображений, и я хочу создать тренировочную матрицу, чтобы передать ее в SVM. Итак, я прочитал этот фундаментальный пост и постарался сделать как говорится:
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);
}
Но когда я запускаю этот код, я получаю Asstruction failderror:
Я знаю, что совершил глупую ошибку, потому что я очень новичок в openCV.
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ: Ошибка происходит на этом:
trainingMat.at (file_num, ii ++) = trainingMat.at (i, j);
Задача ещё не решена.