C++ OpenCV特征提取之如何实现HOG特征提取

发布时间:2021-11-26 10:46:55 作者:小新
来源:亿速云 阅读:558

这篇文章给大家分享的是有关C++ OpenCV特征提取之如何实现HOG特征提取的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

前言

方向梯度直方图(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方法

C++ OpenCV特征提取之如何实现HOG特征提取

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

C++ OpenCV特征提取之如何实现HOG特征提取

然后我们运行看一下效果

C++ OpenCV特征提取之如何实现HOG特征提取

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


行人检测

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

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

C++ OpenCV特征提取之如何实现HOG特征提取

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

C++ OpenCV特征提取之如何实现HOG特征提取

然后我们重新写

C++ OpenCV特征提取之如何实现HOG特征提取

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

C++ OpenCV特征提取之如何实现HOG特征提取

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

感谢各位的阅读!关于“C++ OpenCV特征提取之如何实现HOG特征提取”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读:
  1. opencv3/C++ HOG特征提取方式
  2. C++ OpenCV特征提取之如何实现Shi-Tomasi角点检测

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++ opencv

上一篇:C++ OpenCV摄像头及视频操作类​VideoCapture怎么用

下一篇:C#如何实现基于Socket套接字的网络通信封装

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》