Hello all, I'm getting error in my code. here i'm doing multiclass classification using svm with 20 classes. here the training data of each class is feature vector .yml file named as Dictionay1 , Dictionay2, ......Dictionay20 such as vocabulary: !!opencv-matrix rows: 100 cols: 1 dt: f data: [ 4.48574181e+01, 3.61391605e-04, 1.06644783e+02, 1.75997910e+02, 8.53040619e+01, 2.40742096e+02, 1.35315109e+02, 9.74207458e+01, 7.31249542e+01, 5.95427322e+01, 3.08762417e+01............
%YAML:1.0
vocabulary: !!opencv-matrix rows: 100 cols: 1 dt: f data: [ 6.63631945e-04, 1.00589867e+02, 1.60471497e+02, 4.06750679e+01, 1.32695053e+02, 2.54314590e+02, 8.82780228e+01... etc
My code is char filename[80];
int main(int argc, char* argv[]) { Mat trainData, trainLabels;
for (int i = 0; i < 22; i++ )
{
sprintf_s(filename, "VocabularyHOG/Dictionary%d.yml", i);
Mat feature;
FileStorage fs(filename, FileStorage::READ);
fs["vocabulary"] >> feature;
feature.convertTo(feature, CV_32F); // make sure we got float data
trainData.push_back(feature.reshape(1, 1)); // as a flat column
trainLabels.push_back(i); // the classlabel
}
// Train the SVM
Ptr<SVM> svm = SVM::create();
svm->setType(SVM::C_SVC);
svm->setKernel(SVM::LINEAR);
svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6));
svm->train(trainData, ROW_SAMPLE, trainLabels);
Mat testData;
FileStorage fs("DictionaryrunningHOG.yml", FileStorage::READ);
fs["vocabulary"] >> testData;
int response = svm->predict(testData);
if (response == 1)
cout << "boxing";
else
cout << "negative result";
waitKey(27);
return 0;
} I'm getting error
please help where i'm doing wrong. Thanks