svm分类器_opencv hog+svm 目标检测

通俗来讲,目标检测就是从一副图片中检测特定的物体目标,获得目标的类别信息和位置信息。目标特征提取可以使用Hog算子,判断物体的类别则可以使用SVM实现。


hog(方向梯度直方图)

在一副图像中,局部目标的表象和形状能够被梯度或边缘的方向密度分布很好地描述。其本质为梯度的统计信息,而梯度主要存在于边缘的地方。例如猫和狗因为形状不同,其hog特征也就不同,可以分别表示为dogHog和catHog。

OpenCV中使用HOGDescriptor这个类封装了hog特征提取函数。

HOGDescriptor hog;hog.compute(img, dogHog, Size(8, 8));

svm(支持向量机)

支持向量机是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面。利用svm可以判断一个hog特征是否属于一个类。

svm训练时需要正样本和负样本,训练结果是一个分类器。例如我们收集大量猫的图片,提取每张图中猫的hog特征作为正样本,再收集大量不带有猫的图片,提取他们的hog特征作为负样本。训练将得到一个识别猫的分类器。

  /*创建和初始化svm对象*/  Ptr<:svm> svm = ml::SVM::create();svm->setType(ml::SVM::C_SVC);svm->setKernel(ml::SVM::LINEAR);svm->setTermCriteria(TermCriteria(CV_TERMCRIT_ITER, 1000, FLT_EPSILON));//使用SVM学习         svm->train(sampleFeatureMat, ml::ROW_SAMPLE, sampleLabelVec);

案例

下面给出一个识别交通标志的案例

待设别标志

f5a9451af05c47904c5bf2ccb5e86a7c.png

识别效果

971fe39d951ca294eac7d1fd42ff3ee6.png

正样本集链接:https://pan.baidu.com/s/1sTCN6drFSWh8ExGWOibtXw 提取码:ms2p

负样本集链接:https://pan.baidu.com/s/1QvxqIYqc7mhwAd3xbx9uZA 提取码:jyjj

训练分类器


/************************

*

*trainHogSvm 训练分类器

hog:hog对象

posPath:记录正样本图片路径的txt文本文件

04ad2b1838262a4c043667a04c96f492.png

posPath:记录负样本图片路径的txt文本文件

7b5f7c6ad56bd94274b1d604432cf664.png

***********************/

vector trainHogSvm(HOGDescriptor &hog, string posPath, string neg
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值