首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ OpenCV特征提取之HOG特征提取(自带行人检测调用)

C++ OpenCV特征提取之HOG特征提取(自带行人检测调用)

作者头像
Vaccae
发布2019-07-24 11:11:58
2.3K0
发布2019-07-24 11:11:58
举报
文章被收录于专栏:微卡智享微卡智享

前言

方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。

HOG特征描述子提取

  • 灰度图像转换
  • 梯度计算
  • 分网格的梯度方向直方图
  • 块描述子
  • 块描述子归一化
  • 特征数据与检测窗口
  • 匹配方法

函数API

C++: gpu::HOGDescriptor::HOGDescriptor(

Size win_size=Size(64, 128), --检测窗口大小

Size block_size=Size(16, 16), --在像素块大小

Size block_stride=Size(8, 8), --块步幅

Size cell_size=Size(8, 8), --Cell大小

int nbins=9, --9个直方图

double win_sigma=DEFAULT_WIN_SIGMA,

double threshold_L2hys=0.2, bool gamma_correction=true,

int nlevels=DEFAULT_NLEVELS

)

代码演示

我们再新建一个项目名为opencv--Hog,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法

根据上面的描述我们写入下面的代码

然后我们运行看一下效果

可以看到输出的的值,说明我们也检测到的人物。


行人检测

OpenCV中自己带的训练模版里面有行人检测,我们可以直接调用了。

首先我们在度娘那找了一张行人的图片

然后把开始加载的图片换成上面这张,然后再把下面的代码我们先屏蔽掉

然后我们重新写

上面就是检测到行人后再把他用红色矩形画出来,下面我们来看一下运行效果

可以看到上面检测的没有问题,把两个人都检测出来了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档