资源简介
自己训练SVM分类器进行HOG行人检测,环境VS2013+OpenCV
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
#define PosSamNO 2400 //正样本个数
#define NegSamNO 12000 //负样本个数
#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 4435
//继承自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(64128)Size(1616)Size(88)Size(88)9);//HOG检测器,用来计算HOG描述子的
int DescriptorDim;//HOG描述子的维数,由图片大小、检测窗口大小、块大小、细胞单元中直方图bin个数决定
MySVM svm;//SVM分类器
//若TRAIN为true,重新训练分类器
if(TRAIN)
{
string ImgName;//图片名(绝对路径)
ifstream finPos(“INRIAPerson96X160PosList.txt“);//正样本图片的文件名列表
//ifstream finPos(“PersonFromVOC2012List.txt“);//正样本图片的文件名列表
ifstream finNeg(“NoPersonFromINRIAList.txt“);//负样本图片的文件名列表
Mat sampleFeatureMat;//所有训练样本的特征向量组成的矩阵,行数等于所有样本的个数,列数等于HOG描述子维数
Mat sampleLabelMat;//训练样本的类别向量,行数等于所有样本的个数,列数等于1;1表示有人,-1表示无人
//依次读取正样本图片,生成HOG描述子
for(int num=0; num {
cout<<“处理:“< //ImgName = “D:\\DataSet\\PersonFromVOC2012\\“ + ImgName;//加上正样本的路径名
ImgName = “D:\\DataSet\\INRIAPerson\\INRIAPerson\\96X160H96\\Train\\pos\\“ + ImgName;//加上正样本的路径名
Mat src = imread(ImgName);//读取图片
if(CENTRAL_CROP)
src = src(Rect(161664128));//将96*160的INRIA正样本图片剪裁为64*128,即剪去上下左右各16个像素
//resize(srcsrcSize(64128));
vector descriptors;//HOG描述子向量
hog.compute(srcdescriptorsSize(88));//计算HOG描述子,检测窗口移动步长(88)
//cout<<“描述子维数:“<riptors.size()<
//处理第一个样本时初始化特征向量矩阵和类别矩阵,因为只有知道了特征向量的维数才能初始化特征向量矩阵
if( 0 == num )
{
DescriptorDim = descriptors.size();//HOG描述子的维数
//初始化所有训练样本的特征向量组成的矩阵,行数等于所有样本的个数,列数等于HOG描述子维数sampleFeatureMat
sampleFeatureMat = Mat::zeros(PosSamNO+NegSamNO+HardExampleNO DescriptorDim CV_32FC1);
//初始化训练样本的类别向量,行数等于所有样本的个数,列数等于1;1表示有人,0表示无人
sampleLabelMat = Mat::zeros(PosSamNO+NegSamNO+HardExampleNO 1 CV_32FC1);
}
//将计算好的HOG描述子复制到样本特征矩阵sampleFeatureMat
for(int i=0; iriptorDim; i++)
sampleFeatureMat.at(numi) = descriptors[i];//第num个样本的特征向量中的第i个元素
sampleLabelMat.at(num0) = 1;//正样本类别为1,有人
}
//依次读取负样本图片,生成HOG描述子
f
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-04-28 11:52 SVM_Train\
目录 0 2019-04-28 12:18 SVM_Train\SVM_Train_Predict_HOG\
目录 0 2013-11-13 16:36 SVM_Train\SVM_Train_Predict_HOG\Debug\
文件 144896 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\Debug\SVM_Train_Predict_HOG.exe
文件 910680 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\Debug\SVM_Train_Predict_HOG.ilk
文件 1747968 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\Debug\SVM_Train_Predict_HOG.pdb
目录 0 2019-04-28 12:13 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\
文件 15269888 2019-04-28 12:18 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG.sdf
文件 930 2013-11-07 15:49 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG.sln
文件 12800 2013-11-13 20:25 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG.suo
文件 26112 2019-04-28 12:18 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG.v12.suo
文件 174277 2013-10-22 16:53 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\00000.jpg
文件 788547 2013-10-21 21:44 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\1.png
文件 813015 2013-10-21 21:47 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\2.png
文件 90689 2007-01-10 01:37 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\2007_000423.jpg
文件 818604 2013-10-21 21:48 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\3.png
文件 1610478 2013-10-21 21:48 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\4.png
文件 911894 2013-10-21 21:49 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\5.png
目录 0 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\
文件 762 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\cl.command.1.tlog
文件 14186 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\CL.read.1.tlog
文件 470 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\CL.write.1.tlog
文件 2 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\li
文件 2 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\li
文件 2 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\li
文件 2 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\li
文件 2 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\li
文件 2 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\li
文件 2 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\li
文件 2 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\li
文件 2 2013-11-13 17:14 SVM_Train\SVM_Train_Predict_HOG\SVM_Train_Predict_HOG\Debug\li
............此处省略95个文件信息
相关资源
- STM32L471_HAL_SPI1_W24Q64读写代码
- stm32f4麦克纳姆轮+机械臂多路pwm控制代
- 在STM32中实现NRF24L01源代码
- ddos资源 源代码!
- 蓝牙app开源代码,支持蓝牙4.2,5.0
- pfc单轴模型试验代码学习
- 时间序列分析基于R -王燕 PDF电子书以
- 嘟嘟整理编译正宗翎风引擎源代码附
- 一个非常易学的lidar数据处理程序代码
- bbs.tar.gz论坛开发代码
- 传智播客IOS开发零基础教程源代码和
- 基于tensorflow实现猫狗识别代码(CNN)
- QT5 编程入门的 源代码
- Verilog HDL程序设计详解 光盘 代码
- MNIST手写数字识别库及图片提取代码
- R语言数据分析与数据挖掘实战随书代
- wrk内核源代码
- 代码整洁之道--高清版.pdf
- 基于PCA-HOG的人体检测代码-包括训练,
- 图形学经典试验代码1.三维变换2.实时
- Xilinx授权:公开全部源代码的 PCIe D
- 安卓remusic仿网易音乐播放器源代码
- 百思不得姐源代码(xcode)
- 代码制造业ERP系统SE2000 vb
- 第一行代码_PDF_高清完整版
- vrml代码源文件虚拟教室模型
- 图像融合源代码(多种算法可对比)
- 软件工程课程设计报告(包附源代码
- 2015年电赛F题数字频率计完整工程代码
- 基于xilinx的以太网通信Verilog代码
评论
共有 条评论