OpenCV_基于HOG特征的行人检测

OpenCV中提供了HOG的行人检测(pedestrain detection)类。

cv::HOGDescriptor类的构造函数的各参数的定义:

[cpp] view
plain
copy

  1. CV_WRAP HOGDescriptor() :   
  2.      winSize(64,128),                             // detect window   
  3.      blockSize(16,16),                            // block 大小   
  4.      blockStride(8,8),                            // overlap block的滑动步长   
  5.      cellSize(8,8),                               // cell 大小    
  6.      nbins(9),                                    // 直方图的bin个数   
  7.      derivAperture(1),                            // 微分算子核   
  8.      winSigma(-1),                                // 在window上进行高斯加权   
  9.      histogramNormType(HOGDescriptor::L2Hys),     // 直方图归一化类型   
  10.      L2HysThreshold(0.2),                         // L2-norm followed by clipping (limiting the maximum values of v to 0.2) and renormalising  
  11.      gammaCorrection(true),                       // Gamma校正,去除光照影响  
  12.      nlevels(HOGDescriptor::DEFAULT_NLEVELS)      // 分层数  

下面的两段代码采用OpenCV中的HOG行人检测类来完成对静态图片中的行人检测。

1)采用64*128 (像素为单位)的detect window

[cpp] view
plain
copy

  1. //  基于HOG特征的行人检测    
  2. //  Author:www.icvpr.com  
  3. //  Blog:  http://blog.csdn.net/icvpr    
  4.   
  5. #include <iostream>  
  6. #include <opencv2/opencv.hpp>  
  7.   
  8.   
  9. int main(int argc, char** argv)  
  10. {  
  11.     cv::Mat image = cv::imread("test.bmp");  
  12.     if (image.empty())  
  13.     {  
  14.         std::cout<<"read image failed"<<std::endl;  
  15.     }  
  16.   
  17.       
  18.     // 1. 定义HOG对象  
  19.     cv::HOGDescriptor hog; // 采用默认参数  
  20.       
  21.   
  22.     // 2. 设置SVM分类器  
  23.     hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());   // 采用已经训练好的行人检测分类器  
  24.   
  25.     // 3. 在测试图像上检测行人区域  
  26.     std::vector<cv::Rect> regions;  
  27.     hog.detectMultiScale(image, regions, 0, cv::Size(8,8), cv::Size(32,32), 1.05, 1);  
  28.   
  29.     // 显示  
  30.     for (size_t i = 0; i < regions.size(); i++)  
  31.     {  
  32.         cv::rectangle(image, regions[i], cv::Scalar(0,0,255), 2);  
  33.     }  
  34.   
  35.     cv::imshow("hog", image);  
  36.     cv::waitKey(0);  
  37.   
  38.     return 0;  
  39. }  

行人检测实验结果:

  

2)采用48*96(像素为单位)的detect window

[cpp] view
plain
copy

  1. //  基于HOG特征的行人检测      
  2. //  Author: http://blog.csdn.net/icvpr      
  3.     
  4. #include <iostream>    
  5. #include <opencv2/opencv.hpp>    
  6.     
  7.     
  8. int main(int argc, char** argv)    
  9. {    
  10.     cv::Mat image = cv::imread("test.bmp");    
  11.     if (image.empty())    
  12.     {    
  13.         std::cout<<"read image failed"<<std::endl;    
  14.     }    
  15.     
  16.         
  17.     // 1. 定义HOG对象    
  18.     cv::HOGDescriptor hog(cv::Size(48, 96), cv::Size(16, 16), cv::Size(8, 8), cv::Size(8, 8), 9, 1,-1, cv::HOGDescriptor::L2Hys, 0.2, true, cv::HOGDescriptor::DEFAULT_NLEVELS);   
  19.         
  20.     
  21.     // 2. 设置SVM分类器    
  22.     hog.setSVMDetector(cv::HOGDescriptor::getDaimlerPeopleDetector());   // 采用已经训练好的行人检测分类器    
  23.     
  24.     // 3. 在测试图像上检测行人区域    
  25.     std::vector<cv::Rect> regions;    
  26.     hog.detectMultiScale(image, regions, 0, cv::Size(8,8), cv::Size(32,32), 1.05, 1);    
  27.     
  28.     // 显示    
  29.     for (size_t i = 0; i < regions.size(); i++)    
  30.     {    
  31.         cv::rectangle(image, regions[i], cv::Scalar(0,0,255), 2);    
  32.     }    
  33.     
  34.     cv::imshow("hog", image);    
  35.     cv::waitKey(0);    
  36.     
  37.     return 0;    
  38. }    

行人检测实验结果:

  

OpenCV_基于HOG特征的行人检测

时间: 2024-11-03 10:45:35

OpenCV_基于HOG特征的行人检测的相关文章

基于SURF特征的目标检测

转战matlab了.步骤说一下: 目标图obj 含目标的场景图scene 载入图像 分别检测SURF特征点 分别提取SURF描述子,即特征向量 用两个特征相互匹配 利用匹配结果计算两者之间的transform关系tform 根据obj位置与变换关系tform,在scene图上框出obj 代码,来自matlab,http://localhost:9090/vision/gs/object-detection-and-tracking.html#btt5qyu %step1:读取图片 %读取obje

(转) 行人检测资源 综述文献

      首页 视界智尚 算法技术 每日技术 来打我呀 注册     行人检测资源(上)综述文献         行人检测具有极其广泛的应用:智能辅助驾驶,智能监控,行人分析以及智能机器人等领域.从2005年以来行人检测进入了一个快速的发展阶段,但是也存在很多问题还有待解决,主要还是在性能和速度方面还不能达到一个权衡.近年,以谷歌为首的自动驾驶技术的研发正如火如荼的进行,这也迫切需要能对行人进行快速有效的检测,以保证自动驾驶期间对行人的安全不会产生威胁. 1   行人检测的现状        

目标检测的图像特征提取之(一)HOG特征

原帖地址:http://blog.csdn.net/zouxy09/article/details/7929348 1.HOG特征:        方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功.需要提醒的是,HOG+SVM进行行人检测的方法是法国研究

入侵检测系统-急!linux系统下的基于特征串匹配攻击检测系统的问题

问题描述 急!linux系统下的基于特征串匹配攻击检测系统的问题 为什么运行了以后没反应就直接结束了啊?下面附代码 #include #include #include #include #include #include #include #include typedef struct Packetinfo{ u_char src_ip[4]; u_char dest_ip[4]; char *packetcontent; int contentlen; }PACKETINFO; typede

高密度环境下行人检测和统计

好文要转! 实验程序视频 下载 1 问题描述   高密度环境下的行人统计一直没有得到很好的解决,主要原因是对高密度人群中的行人检测和跟踪是一个很难的问题,如下图所示环境,存在的困难包括: 检测方面: 由于人群整体处于运动状态,占据了背景的60%以上的面积,导致许多目标检测的方法,如基于背景差的运动目标检测.分割方法难以奏效.另外,由于人群存在大量遮挡,导致基于行人轮廓的检测方法,如HOG也难以奏效. 跟踪方面: 高密度环境中的多目标跟踪,由于存在大量的遮挡.合并.分离,实现准确的跟踪是一个富有挑

【行人检测】opencv自带

直接上opencv自带的行人检测. #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/highgui/highgui.hpp" #include <stdio.h> #include <string.h> #include <ctype.h> using name

opencv-HOG行人检测有的时候不是很精确,哪位大神能用比较专业的角度解释一下?

问题描述 HOG行人检测有的时候不是很精确,哪位大神能用比较专业的角度解释一下? 我想大家都注意过虽然与很多其他的算法相比,HOG行人检测精确度已经很高了,不过还是会经常出现有的人没有检测出来,或者是旁边的树也被检测出来的情况,请大神用比较专业的术语,解释一下这种情况的发生呗,谢谢了!

基于机器学习的web异常检测

本文讲的是基于机器学习的web异常检测,Web防火墙是信息安全的第一道防线.随着网络技术的快速更新,新的黑客技术也层出不穷,为传统规则防火墙带来了挑战.传统web入侵检测技术通过维护规则集对入侵访问进行拦截.一方面,硬规则在灵活的黑客面前,很容易被绕过,且基于以往知识的规则集难以应对0day攻击:另一方面,攻防对抗水涨船高,防守方规则的构造和维护门槛高.成本大. 基于机器学习技术的新一代web入侵检测技术有望弥补传统规则集方法的不足,为web对抗的防守端带来新的发展和突破.机器学习方法能够基于大

hog-HOG-LBP用于处理遮挡部分的行人检测

问题描述 HOG-LBP用于处理遮挡部分的行人检测 最近在看09年的ICCV中的HOG-LBP用于处理遮挡部分的行人检测这篇论文...文中的HOG和LBP是怎么融合的??不胜感谢~~