opencv中SVM

首先,理解下SVM得输入格式。SVM的train()函数主要包含两个输入数据:训练数据矩阵以及对应标签组成的矩阵。其中训练数据为行向量,标签矩阵为列向量。举个例子吧,比如在实验里一共用到300张图片作为训练数据,其中150张为正例样本,150张为负例样本,那么最终得到的训练数据矩阵大小应为300行n列,这里的n代表的就是每一张图片进行特征提取(包括下采样的方法)之后的特征维数,一般在一两千左右。对应的,标签矩阵应为300行1列,存储的内容为对应行特征向量所代表的正负标签,一般去+1和-1,当然取成别的数也可以。

其次需要说明的是就是SVM对于输入的数据类型是有要求的,即mTrainData(训练数据矩阵)以及mFlagPosNeg(标签矩阵)都必须为CV_32FC1类型,因此需要进行类型转换,而且必须保证转换完之后数值都不能大于1,这就给我们了两点启示:1、不能直接用下采用后的图像像素作为训练数据的输入,需要进行类型的归一化。2、类型转换时要使用normlize()函数,保证其数值范围不大于1,而不能简单的使用Mat的成员函数coverto,只变类型不变数值范围。

--------------------- 本文来自 山在岭就在 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u013088062/article/details/45113417?utm_source=copy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值