OpenCV SVM — Как изменить объект Mat на соответствующие размеры?

Поэтому я пытаюсь создать 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 была обучена. Я попытался с помощью reshape на sampleMat, но безрезультатно. Любая помощь приветствуется. Спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]