这是一个愚蠢的问题,因为我对 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/
我的问题是,如何将向量 < features >转换为适当的矩阵以输入 CvSVM ?显然我做错了什么,OpenCV 的教程显示包含训练数据的 2D 矩阵被输入 SVM。那么,如何将向量 < features >转换为 2D 矩阵,2nd 维中的值是什么?
这些功能究竟是什么?它们是由归一化幅度直方图组成的 9 个 bin 吗?