【发布时间】:2015-04-02 23:35:10
【问题描述】:
在 MATLAB 与 libSVM 的交叉验证中,我发现这些是最好的参数:
model = svmtrain( labels, training, '-s 0 -t 2 -c 10000 -g 100');
现在我想用 OpenCV 复制 C++ 中的分类。
但我不明白如何将C++参数设置为与MATLAB相同:
基于this documentation 我尝试了以下方法:
CvSVMParams params;
params.svm_type = CvSVM::C_SVC;
params.kernel_type = CvSVM::RBF;
//params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 10000, 1e-6);
params.Cvalue = 10000;
params.gamma = 100;
CvSVM SVM;
SVM.train(train, labels, Mat(), Mat(), params);
但我收到此错误:
error: no member named 'Cvalue' in 'CvSVMParams' params.Cvalue = 10000;
最后一件事,我应该取消注释
//params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 10000, 1e-6);
并尝试其他值还是不重要? 因为我什至无法理解在 MATLAB 中如何设置相同的参数。
【问题讨论】:
-
只是params.C 而不是CValue
-
@berak 谢谢...关于我的第二个问题? C中的这一行:params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 10000, 1e-6) 在matlab中有对应的吗?
-
不知道 matlab,抱歉。并且您只需要显式设置 TermCriteria,如果您想要的不是标准值 (1000 iter, eps=FLT_MIN)
标签: c++ matlab opencv svm libsvm