资源简介

本资源为HOG+SVM实现的行人检测系统,包括完整的训练、检测和测试程序。检测程序运行环境为VS2013+opencv2.4.13和QT+opencv3.1.0,测试程序运行环境为matlab2016,具体运行方法见资源中的.txt说明文件。

资源截图

代码片段和文件信息

// Pedestriandetection.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include
#include 
#include 
#include “opencv2/video/background_segm.hpp“
#include 

using namespace std;
using namespace cv;

#define PosSamNO 2400  //正样本个数
#define NegSamNO 12660    //负样本个数

#define TRAIN false   //是否进行训练true表示重新训练,false表示读取xml文件中的SVM模型
#define CENTRAL_CROP true   //true:训练时,对96*160的INRIA正样本图片剪裁出中间的64*128大小人体

//HardExample:负样本个数。如果HardExampleNO大于0,表示处理完初始负样本集后,继续处理HardExample负样本集。
//不使用HardExample时必须设置为0,因为特征向量矩阵和特征类别矩阵的维数初始化时用到这个值
#define HardExampleNO 0  

void press(HOGDescriptor &myHOG Mat src);
//继承自CvSVM的类,因为生成setSVMDetector()中用到的检测子参数时,需要用到训练好的SVM的decision_func参数,
//但通过查看CvSVM源码可知decision_func参数是protected类型变量,无法直接访问到,只能继承之后通过函数访问
class MySVM : public CvSVM
{
public:
//获得SVM的决策函数中的alpha数组  
double * get_alpha_vector()
{

return this->decision_func->alpha;
}

//获得SVM的决策函数中的rho参数即偏移量  
float get_rho()
{
return this->decision_func->rho;
}
};



int main()
{
//检测窗口(64128)块尺寸(1616)块步长(88)cell尺寸(88)直方图bin个数9
HOGDescriptor hog(Size(64 128) Size(16 16) Size(8 8) Size(8 8) 9);//HOG检测器,用来计算HOG描述子的
int DescriptorDim;//HOG描述子的维数,由图片大小、检测窗口大小、块大小、细胞单元中直方图bin个数决定
MySVM svm;//SVM分类器

//若TRAIN为true,重新训练分类器
if (TRAIN)
{
string ImgName;//图片名(绝对路径)
ifstream finPos(“E:\\项目\\数字图像处理\\INRIAPerson\\INRIAPerson\\96X160H96\\Train\\INRIAPerson96X160PosList.txt“);//正样本图片的文件名列表
//ifstream finPos(“PersonFromVOC2012List.txt“);//正样本图片的文件名列表
ifstream finNeg(“E:\\项目\\数字图像处理\\INRIAPerson\\INRIAPerson\\NoPersonFromINRIAList.txt“);//负样本图片的文件名列表

Mat sampleFeatureMat;//所有训练样本的特征向量组成的矩阵,行数等于所有样本的个数,列数等于HOG描述子维数
Mat sampleLabelMat;//训练样本的类别向量,行数等于所有样本的个数,列数等于1;1表示有人,-1表示无人


//依次读取正样本图片,生成HOG描述子
for (int num = 0; num {
cout << “处理:“ << ImgName << endl;
//ImgName = “D:\\DataSet\\PersonFromVOC2012\\“ + ImgName;//加上正样本的路径名
ImgName = “E:\\项目\\数字图像处理\\INRIAPerson\\INRIAPerson\\96X160H96\\Train\\pos\\“ + ImgName;//加上正样本的路径名
Mat src = imread(ImgName);//读取图片
if (CENTRAL_CROP)
src = src(Rect(16 16 64 128));//将96*160的INRIA正样本图片剪裁为64*128,即剪去上下左右各16个像素
//resize(srcsrcSize(64128));

vector descriptors;//HOG描述子向量
hog.compute(src descriptors Size(8 8));//计算HOG描述子,检测窗口移动步长(88)
//
cout << “描述子维数:“ << descriptors.size() << endl;

//处理第一个样本时初始化特征向量矩阵和类别矩阵,因为只有知道了特征向量的维数才能初始化特征向量矩阵
if (0 == num)
{
DescriptorDim = descriptors.size();//HOG描述子的维数
//初始化所有训练样本的特征向量组成的矩阵,行数等于所有样本的个数,列数等于HOG描述子维数sampleFeatureMat
sampleFeatureMat = Ma

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-03-25 00:41  行人检测工程文件\
     目录           0  2019-03-25 00:40  行人检测工程文件\Pedestriandetection\
     目录           0  2019-03-25 00:40  行人检测工程文件\Pedestriandetection\Debug\
     文件      184320  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Debug\Pedestriandetection.exe
     文件      960104  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Debug\Pedestriandetection.ilk
     文件     3165184  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Debug\Pedestriandetection.pdb
     文件       44073  2018-05-18 19:51  行人检测工程文件\Pedestriandetection\HOGDetectorForOpenCV.txt
     目录           0  2019-03-25 00:40  行人检测工程文件\Pedestriandetection\Pedestriandetection\
     目录           0  2019-03-25 00:40  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\
     目录           0  2019-03-25 00:40  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestri.EA9A9B55.tlog\
     文件       13766  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestri.EA9A9B55.tlog\CL.read.1.tlog
     文件        1384  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestri.EA9A9B55.tlog\CL.write.1.tlog
     文件         169  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestri.EA9A9B55.tlog\Pedestriandetection.lastbuildstate
     文件        1878  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestri.EA9A9B55.tlog\cl.command.1.tlog
     文件        2438  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestri.EA9A9B55.tlog\link.command.1.tlog
     文件        5028  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestri.EA9A9B55.tlog\link.read.1.tlog
     文件         726  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestri.EA9A9B55.tlog\link.write.1.tlog
     文件        3373  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestriandetection.log
     文件      824508  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestriandetection.obj
     文件     1703936  2018-05-13 10:24  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\Pedestriandetection.pch
     文件       11194  2018-05-13 10:24  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\stdafx.obj
     文件      756736  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\vc120.idb
     文件     1781760  2018-05-18 19:50  行人检测工程文件\Pedestriandetection\Pedestriandetection\Debug\vc120.pdb
     文件       13053  2018-05-18 19:51  行人检测工程文件\Pedestriandetection\Pedestriandetection\Pedestriandetection.cpp
     文件        4672  2018-05-13 10:24  行人检测工程文件\Pedestriandetection\Pedestriandetection\Pedestriandetection.vcxproj
     文件        1326  2018-05-13 10:19  行人检测工程文件\Pedestriandetection\Pedestriandetection\Pedestriandetection.vcxproj.filters
     文件        1594  2018-05-13 10:19  行人检测工程文件\Pedestriandetection\Pedestriandetection\ReadMe.txt
     文件         225  2018-05-13 10:19  行人检测工程文件\Pedestriandetection\Pedestriandetection\stdafx.cpp
     文件         234  2018-05-13 10:19  行人检测工程文件\Pedestriandetection\Pedestriandetection\stdafx.h
     文件         236  2018-05-13 10:19  行人检测工程文件\Pedestriandetection\Pedestriandetection\targetver.h
     文件          44  2018-05-18 19:47  行人检测工程文件\Pedestriandetection\Pedestriandetection.opensdf
............此处省略20个文件信息

评论

共有 条评论