本文主要介绍下opencv中怎样使用hog算法,因为在opencv中已经集成了hog这个类。其实使用起来是很简单的,从后面的代码就可以看出来。本文参考的资料为opencv自带的sample

  关于opencv中hog的源码分析,可以参考本人的另一篇博客:opencv源码解析之(6):hog源码分析

  开发环境:opencv2.4.2+Qt4.8.2+ubuntu12.04+QtCreator2.5.

  实验功能:

  单击Open Image按钮,选择需要进行人检测的一张图片,确定后自动显示出来。该图片的大小没限制。

  单击People Detect按钮,则程序会自动对该图片进行行人检测,且将检测到的效果显示出来,即用1个矩形框将行人框出来。

  单击Close按钮,退出程序。

  实验说明:

  1. hog描述子在opencv中为HOGDescriptor

  2.可以调用该描述子setSVMDetector方法给用于对hog特征进行分类的svm模型的系数赋值,这里的参数为HOGDescriptor::getDefaultPeopleDetector()时表示采用系统默认的参数,因为这些参数是用很多图片训练而来的。  

  3. 对输入图片进行行人检测时由于图片的大小不一样,所以要用到多尺度检测。这里是用hog类的方法detectMultiScale。参数解释如下:

HOGDescriptor::detectMultiScale(const GpuMat& img, vector<Rect>& found_locations, doublehit_threshold=0, Size win_stride=Size(), Size padding=Size(), double scale0=1.05, int group_threshold=2)

  该函数表示对输入的图片img进行多尺度行人检测 img为输入待检测的图片;found_locations为检测到目标区域列表;参数3为程序内部计算为行人目标的阈值,也就是检测到的特征到SVM分类超平面的距离;参数4为滑动窗口每次移动的距离。它必须是块移动的整数倍;参数5为图像扩充的大小;参数6为比例系数,即滑动窗口每次增加的比例;参数7为组阈值,即校正系数,当一个目标被多个窗口检测出来时,该参数此时就起了调节作用,为0时表示不起调节作用。

   4.  最后对检测出来的目标矩形框,要采用一些方法处理,比如说2个目标框嵌套着,则选择最外面的那个框。5.  因为hog检测出的矩形框比实际人体框要稍微大些,所以需要对这些矩形框大小尺寸做一些调整。

实验结果: 图片1效果:

  


图片2效果:

  


图片3效果:

  


图片4效果:

  

实验主要部分代码(附录有工程code下载链接):
#include "dialog.h"
#include "ui_dialog.h"
#include <QtCore>
#include <QtGui>Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{ui->setupUi(this);
}Dialog::~Dialog()
{delete ui;
}void Dialog::on_openButton_clicked()
{QString img_mame = QFileDialog::getOpenFileName(this, "Open img", "../people", tr("Image Files(*.png *.jpg *.bmp *.jpeg)"));img = imread( img_mame.toAscii().data() );imwrite("../hog_test.jpg", img);ui->textBrowser->setFixedSize(img.cols, img.rows);ui->textBrowser->append("<img src=../hog_test.jpg>");
}void Dialog::on_detectButton_clicked()
{vector<Rect> found, found_filtered;cv::HOGDescriptor people_dectect_hog;//采用默认的已经训练好了的svm系数作为此次检测的模型people_dectect_hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());//对输入的图片img进行多尺度行人检测//img为输入待检测的图片;found为检测到目标区域列表;参数3为程序内部计算为行人目标的阈值,也就是检测到的特征到SVM分类超平面的距离;//参数4为滑动窗口每次移动的距离。它必须是块移动的整数倍;参数5为图像扩充的大小;参数6为比例系数,即测试图片每次尺寸缩放增加的比例;//参数7为组阈值,即校正系数,当一个目标被多个窗口检测出来时,该参数此时就起了调节作用,为0时表示不起调节作用。people_dectect_hog.detectMultiScale(img, found, 0, Size(8, 8), Size(32, 32), 1.05, 2);//从源码中可以看出://#define __SIZE_TYPE__ long unsigned int//typedef __SIZE_TYPE__ size_t;//因此,size_t是一个long unsigned int类型size_t i, j;for (i = 0; i < found.size(); i++ ){Rect r = found[i];//下面的这个for语句是找出所有没有嵌套的矩形框r,并放入found_filtered中,如果有嵌套的//话,则取外面最大的那个矩形框放入found_filtered中for(j = 0; j <found.size(); j++)if(j != i && (r&found[j])==r)break;if(j == found.size())found_filtered.push_back(r);}//在图片img上画出矩形框,因为hog检测出的矩形框比实际人体框要稍微大些,所以这里需要//做一些调整for(i = 0; i <found_filtered.size(); i++){Rect r = found_filtered[i];r.x += cvRound(r.width*0.1);r.width = cvRound(r.width*0.8);r.y += cvRound(r.height*0.07);r.height = cvRound(r.height*0.8);rectangle(img, r.tl(), r.br(), Scalar(0, 255, 0), 3);}imwrite("../hog_test_result.jpg", img);ui->textBrowser->clear();ui->textBrowser->append("<img src=../hog_test_result.jpg>");}void Dialog::on_closeButton_clicked()
{close();
}

实验总结:
从实验的结果来看,图片检测的准确率一般,当人体遮挡情况比较严重,且背景比较复杂时,有些误检和漏检。不过程序的检查速度还行,因为源码中用做了些优化处理。

 附:工程code下载。

http://www.cnblogs.com/tornadomeet/archive/2012/08/03/2621814.html

http://www.docin.com/p-119795862.html

http://www.pudn.com/downloads89/sourcecode/graph/texture_mapping/detail339697.html

http://www.pudn.com/downloads377/sourcecode/graph/opencv/detail1626443.html

http://www.doc88.com/p-0901980821190.html

http://wenku.baidu.com/link?url=UyGzJEwDnJoT418mMt2V9ciCoxQlmtGGSkhRmk1mIRh0g0AgyAiylhekqfseOk1c0SgLhc2r-x9CbkdW5nkp_yJu_UI97RVMb-t6SeMeNW_ 中山大学博士学位论文

http://wenku.baidu.com/link?url=U-nR0nMss-k9ohQdLaKijTA2xsnx49kPu_1bnclVNaGqnxILz-8yUGK1pVBQM2lkmtGkxyOh_GobIHQfGsTrQHP61yAIIKdZTxeJRvMYI0i 开尔曼滤波

http://wenku.baidu.com/link?url=U-nR0nMss-k9ohQdLaKijTA2xsnx49kPu_1bnclVNaGqnxILz-8yUGK1pVBQM2lkQSr-1Za7kaSgwJ_kSl3VNmyfL6Y4BQnZuJIM9DAVhUK 人体检测博士论文

http://wenku.baidu.com/link?url=U-nR0nMss-k9ohQdLaKijTA2xsnx49kPu_1bnclVNaGqnxILz-8yUGK1pVBQM2lkxOLrBmNqLzEbQRFTGujs--XJwVat1PcRChTvXNCGaaC 多尺度行人检测

http://www.jdl.ac.cn/project/faceId/res-track.htm

http://www.cnblogs.com/ztfei/archive/2012/09/02/2667607.html

http://wenku.baidu.com/link?url=U-nR0nMss-k9ohQdLaKijTA2xsnx49kPu_1bnclVNaGqnxILz-8yUGK1pVBQM2lkxOLrBmNqLzEbQRFTGujs--XJwVat1PcRChTvXNCGaaC 基于harr和hog的检测

http://wenku.baidu.com/view/359a912ded630b1c59eeb577.html 优化

http://oaps.lib.tsinghua.edu.cn/handle/123456789/2240 清华

http://www.cnblogs.com/tornadomeet/archive/2012/08/15/2640754.html

转载于:https://www.cnblogs.com/pengkunfan/p/4137532.html

目标检测之行人检测(Pedestrian Detection)基于hog(梯度方向直方图)--- 梯度直方图特征行人检测、人流检测2...相关推荐

  1. 行人检测--What Can Help Pedestrian Detection?

    What Can Help Pedestrian Detection? CVPR2017 本文主要分析 extra features 对于 基于CNN 的行人检测有什么帮助,设计了一个行人检测网络 H ...

  2. 目标检测20年(Object Detection in 20 Years)

    Object Detection in 20 Years: A Survey Zhengxia Zou, Zhenwei Shi, Member, IEEE, Yuhong Guo, and Jiep ...

  3. 图像识别和目标检测系列(Part 1)基于传统计算机视觉技术的图像识别简介

    Image Recognition and Object Detection : Part 1 图像识别和目标检测简史 图像识别(又称图像分类) 图像分类器的剖析 Step 1 : Preproces ...

  4. OpenFace库(Tadas Baltrusaitis)中基于HOG进行正脸人脸检测的测试代码

    Tadas Baltrusaitis的OpenFace是一个开源的面部行为分析工具,它的源码可以从https://github.com/TadasBaltrusaitis/OpenFace下载.Ope ...

  5. 基于深度学习特征的植物病虫害检测

     ABSTRACT 及时.准确地诊断植物病害,对于防止农业生产的损失和农产品的损失或减少具有重要作用.为了解决这类问题,可以使用基于机器学习的方法.近年来,在图像处理中应用尤其广泛的深度学习为精准农业 ...

  6. 文献记录(part45)--Pedestrian detection with super-resolution reconstruction for low-quality image

    学习笔记,仅供参考,有错必纠 关键词:行人检测;低质量;SRGAN;Faster R-CNN Pedestrian detection with super-resolution reconstruc ...

  7. (论文阅读)NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing

    2020CVPR的密集行人检测论文      原文链接:             NMS by Representative Region: Towards Crowded Pedestrian De ...

  8. 行人检测(Pedestrian Detection)资源

    行人检测(Pedestrian Detection)资源 原文链接 http://hi.baidu.com/susongzhi/item/085983081b006311eafe38e7 一.论文 C ...

  9. 转:行人检测(Pedestrian Detection)资源

    .论文 CVPR 2012 与行人检测相关的论文 [1] Contextual Boost for Pedestrian Detection  YuanyuanDing, Jing Xiao [2]  ...

最新文章

  1. nmap脚本(nse)原理和编写
  2. API 分页设计与实现探讨
  3. python【蓝桥杯vip练习题库】ALGO-75筛选号码(约瑟夫环)
  4. 计算机电缆称赞千 捷网络下拉刷词,电脑常用技巧
  5. php5.0 aes加解密,PHP的aes加解密算法
  6. ProGuard中keep到底有什么作用
  7. Lua 调试(Debug)
  8. 太想成功了--成功之前,你是否养成了这些习惯?
  9. 如何使用Python Flask编写Web服务
  10. LeetCode 540. 有序数组中的单一元素(Single Element in a Sorted Array) 42
  11. 电子游戏理论基础初探
  12. 7.2.5 dps 测试软件,7.2.5冰DK萨墓六大DPS饰品测试:属性机制及分析
  13. 电驴无法增加服务器怎么办,电驴连接不上服务器是什么原因?介绍原因及解决方法步骤...
  14. Tomcat安装及配置详解
  15. notepad++查看二进制.class文件——HexEditor插件(64/32位)安装教程
  16. 香帅的北大金融学课笔记15 -- 大师投资智慧
  17. 5G关键技术之波束成型
  18. windows环境搭建MQTT
  19. Redis 之 subscribe 订阅模式封装
  20. nginx 之 proxy_pass详解(好文章!!详细)

热门文章

  1. Python-Jenkins助力传统发布流程
  2. mac 下系统目录权限问题
  3. targetcli读取prefs.bin出错的问题的解决方法
  4. crontab FAQ
  5. Apache Rewrite规则详解[转]
  6. URAL 7077 Little Zu Chongzhi's Triangles(14广州I)
  7. USACO 1.3... 虫洞 解题报告(搜索+强大剪枝+模拟)
  8. ubuntu 下安装 VIM 依赖vim-common错误
  9. 引用和const 引用的区别(转自chinaitlab)
  10. H3CNE考试讨论群