Opencv 3 SVM培训 [英] Opencv 3 SVM training

查看:259
本文介绍了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的文档页面,但它告诉一切,但不知道如何真正使用它(至少我不能让它出来)。
此外,看起来没有人在互联网上使用SVC从OpenCV的3.0。



目前,我只能得到以下:

  ml :: SVM.Params params; 
params.svmType = ml :: SVM :: C_SVC;
params.kernelType = ml :: SVM :: POLY;
params.gamma = 3;你可以向我提供信息,如何重写实际的培训openCV 3?

解决方案

与opencv3.0,它是绝对不同,但不难:

  Ptr< ml :: SVM> svm = ml :: SVM :: create(); 
// edit:params struct被删除,
//我们使用setter / getter now:
svm-> setType(ml :: SVM :: C_SVC);
svm-> setKernel(ml :: SVM :: POLY);
svm-> setGamma(3);

Mat trainData; //每行一个特征
Mat标签;
svm-> train(trainData,ml :: ROW_SAMPLE,labels);
// ...
Mat查询; // input,1channel,1 row(apply reshape(1,1)if nessecary)
Mat res; // output
svm-> predict(query,res);


As you may know, many things changed in OpenCV 3 (in comparision to the openCV2 or the old first version).

In the old days, to train SVM one would use:

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);

In the third version of API, there is no CvSVMParams nor CvSVM. Surprisingly, there is a documentation page about SVM, but it tells everything, but not how to really use it (at least I cannot make it out). Moreover, it looks like no one in the Internet uses SVM from OpenCV's 3.0.

Currently, I only managed to get the following:

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

Can you please provide me with information, how to rewrite the actual training to openCV 3?

解决方案

with opencv3.0, it's definitely different , but not difficult:

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);

这篇关于Opencv 3 SVM培训的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆