opencv - 将提取的 HoG 特征提供给 CvSVM 的训练函数

标签 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 转换为合适的矩阵以输入 CvSVM?显然我做错了什么,OpenCV 的教程显示包含训练数据的二维矩阵被送入 SVM。那么,如何将 vector < features > 转换为二维矩阵,二维中的值是多少?

这些功能到底是什么?它们是由归一化幅度直方图组成的 9 个 bin 吗?

最佳答案

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

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

非常感谢!

关于opencv - 将提取的 HoG 特征提供给 CvSVM 的训练函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11839402/

相关文章:

python - 使用支持向量回归进行时间序列预测

python - 如何构建和安装 OpenCV 4.0?

python - 频域上的同态滤波(Python 和 OpenCV)

algorithm - 模板与旋转匹配

c++ - 将 svm 分类器设置为 HOG 检测器

python - Sklearn - svm加权特征

opencv - 如何纠正检测到的椭圆

opencv - 从哪里获取 haar 训练的背景样本图像?

c - C 中的 Blob 检测(不适用于 OPENCV)

image-processing - 使用opencv检测圆的图案