将提取的HoG特征提供给CvSVM的列车功能

时间:2012-08-07 04:44:36

标签: opencv computer-vision svm

这是一个愚蠢的问题,因为我对SVM很新,

我设法使用OpenCV的HoGDescriptor提取功能和位置:

vector< float > features;
vector< Point > locations;
hog_descriptors.compute( image, features, Size(0, 0), Size(0, 0), locations );

然后我继续使用CvSVM根据我提取的功能训练SVM。

Mat training_data( features );
CvSVM svm;
svm.train( training_data, labels, Mat(), Mat(), params );

这给了我一个错误:

OpenCV Error: Bad argument (There is only a single class) in cvPreprocessCategoricalResponses, file /opt/local/var/macports/build/ 

我的问题是,如何转换 vector&lt;功能&gt; 进入适当的矩阵以馈入CvSVM?显然我做错了,OpenCV的教程显示包含训练数据的2D矩阵被输入SVM。那么,我该如何转换 vector&lt;功能&gt; 到2D矩阵中,第二维中的值是什么?

这些功能究竟是什么?它们是由归一化幅度直方图组成的9个区间吗?

1 个答案:

答案 0 :(得分:2)

我发现了这个问题,因为我正在测试将特征向量传递到SVM以进行训练是否正确,我没有费心去准备阴性和阳性样本。

然而,CvSVM需要至少2个不同的类进行训练,这就是它投掷错误的原因。

非常感谢!