Opencv 3 SVM обучение

Как вы, возможно, знаете, многое изменилось в OpenCV 3 (по сравнению с openCV2 или старой первой версией).

В старые времена для обучения SVM использовались:

CvSVMParams params;
params.svm_type = CvSVM::C_SVC;
params.kernel_type = CvSVM::POLY;
params.gamma = 3;

CvSVM svm;
svm.train(training_mat, labels, Mat(), Mat(), params);

В третьей версии API нет CvSVMParams ни CvSVM, Удивительно, но есть страница документации о SVM, но он говорит обо всем, но не о том, как его реально использовать (по крайней мере, я не могу разобрать).
Более того, похоже, никто в Интернете не использует SVM из OpenCV 3.0.

В настоящее время мне удалось получить только следующее:

ml::SVM.Params params;
params.svmType = ml::SVM::C_SVC;
params.kernelType = ml::SVM::POLY;
params.gamma = 3;

Не могли бы вы предоставить мне информацию, как переписать фактическое обучение для openCV 3?

10

Решение

с opencv3.0 это определенно отличается, но не сложно:

Ptr<ml::SVM> svm = ml::SVM::create();
// edit: the params struct got removed,
// we use setter/getter now:
svm->setType(ml::SVM::C_SVC);
svm->setKernel(ml::SVM::POLY);
svm->setGamma(3);

Mat trainData; // one row per feature
Mat labels;
svm->train( trainData , ml::ROW_SAMPLE , labels );
// ...
Mat query; // input, 1channel, 1 row (apply reshape(1,1) if nessecary)
Mat res;   // output
svm->predict(query, res);
27

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

Я переносил свой код с OpenCV 2.4.9 на 3.0.0-rc1 и имел ту же проблему. К сожалению, API был изменен с момента публикации ответа, поэтому я хотел бы обновить его соответствующим образом:

Ptr<ml::SVM> svm = ml::SVM::create();
svm->setType(ml::SVM::C_SVC);
svm->setKernel(ml::SVM::POLY);
svm->setGamma(3);

Mat trainData; // one row per feature
Mat labels;
Ptr<ml::TrainData> tData = ml::TrainData::create(trainData, ml::SampleTypes::ROW_SAMPLE, labels);
svm->train(tData);
// ...
Mat query; // input, 1channel, 1 row (apply reshape(1,1) if nessecary)
Mat res;   // output
svm->predict(query, res);
9

Я знаю, что это старый пост, но я наткнулся на него в поисках того же решения. Этот урок чрезвычайно полезен: http://docs.opencv.org/3.0-beta/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html

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