所以我正在尝试为图像分类构建SVM并成功训练了SVM。现在,下一步是使用预测函数来获得结果。但是,当我倾向于这样做时,会出现断言错误,如下所示:
OpenCV Error: Assertion failed (samples.cols == var_count && samples.type() == CV_32F) in predict
据我所知,这是因为我作为预测函数的参数传递的样本矩阵的大小不合适。 我做了一个svm-> getVarCount()来了解期望变量的数量是2.这意味着我的矩阵中传递的列数应为2.但是我无法使用以下代码完成最后一步我写了:
Ptr<SVM> svm = SVM::create();
svm->setType(ml::SVM::C_SVC);
svm->setKernel(ml::SVM::POLY);
svm->setGamma(3);
svm->setDegree(3);
svm->train(trainDataFormatted);
svm->save(saveFile);
Mat sampleMat_temp = imread(filename, CV_LOAD_IMAGE_GRAYSCALE);
Mat sampleMat;
sampleMat_temp.convertTo(sampleMat,CV_32F);
//Throws an error here because of the mismatch in dimensions
//float response = svm->predict(sampleMat_temp);
std::cout << "Result:" << svm->getVarCount() << std::endl;
std::cout << "Cols:" << sampleMat.cols;
svm->predict(sampleMat);
这里'svm'变量已经过训练。我尝试在sampleMat上使用reshape,但无济于事。任何帮助将非常感激。谢谢!