HOG测试程序


HOG测试程序
资源截图
代码片段和文件信息
#include “opencv2/opencv.hpp“
#include “opencv2/ml.hpp“

#include 
#include 
#include 
#include
#include 

using namespace cv;
using namespace cv::ml;
using namespace std;

#define FILEPATH  “D:/Pedestrians64x128/“

///////////////////////////////////HOG+SVM识别方式2///////////////////////////////////////////////////
void Train()
{
////////////////////////////////读入训练样本图片路径和类别///////////////////////////////////////////////////
//图像路径和类别
vector imagePath;
vector imageClass;
int numberOfLine = 0;
string buffer;
ifstream trainingData(string(FILEPATH)+“TrainData.txt“);
unsigned long n;

while (!trainingData.eof())
{
getline(trainingData buffer);
if (!buffer.empty())
{
++numberOfLine;
if (numberOfLine % 2 == 0)
{
//读取样本类别
imageClass.push_back(atoi(buffer.c_str()));
}
else
{
//读取图像路径
imagePath.push_back(buffer);
}
}
}

//关闭文件  
trainingData.close();


////////////////////////////////获取样本的HOG特征///////////////////////////////////////////////////
//样本特征向量矩阵
int numberOfSample = numberOfLine / 2;
Mat featureVectorOfSample(numberOfSample 3780 CV_32FC1);//矩阵中每行为一个样本

//样本的类别
Mat classOfSample(numberOfSample 1 CV_32SC1);

Mat convertedImage;
Mat trainImage;

// 计算HOG特征
for (vector::size_type i = 0; i <= imagePath.size() - 1; ++i)
{
//读入图片
Mat src = imread(imagePath[i] -1);
if (src.empty())
{
cout << “can not load the image:“ << imagePath[i] << endl;
continue;
}
//cout << “processing:“ << imagePath[i] << endl;

// 归一化
resize(src trainImage Size(64 128));

// 提取HOG特征
HOGDescriptor hog(cvSize(64 128) cvSize(16 16) cvSize(8 8) cvSize(8 8) 9);
vector descriptors;
double time1 = getTickCount();
hog.compute(trainImage descriptors);//这里可以设置检测窗口步长,如果图片大小超过64×128,可以设置winStride
double time2 = getTickCount();
double elapse_ms = (time2 - time1) * 1000 / getTickFrequency();
//cout << “HOG dimensions:“ << descriptors.size() << endl;
//cout << “Compute time:“ << elapse_ms << endl;


//保存到特征向量矩阵中
for (vector::size_type j = 0; j <= descriptors.size() - 1; ++j)
{
featureVectorOfSample.at(i j) = descriptors[j];
}

//保存类别到类别矩阵
//!!注意类别类型一定要是int 类型的
classOfSample.at(i 0) = imageClass[i];
}


///////////////////////////////////使用SVM分类器训练///////////////////////////////////////////////////
//设置参数,注意Ptr的使用
Ptr svm = SVM::create();
svm->setType(SVM::C_SVC);
svm->setKernel(SVM::LINEAR);//注意必须使用线性SVM进行训练,因为HogDescriptor检测函数只支持线性检测!!!
svm->setTermCriteria(TermCriteria(CV_TERMCRIT_ITER 1000 FLT_EPSILON));

//使用SVM学习         
svm->train(featureVectorOfSample ROW_SAMPLE classOfSample);

//保存分类器(里面包括了SVM的参数,支持向量α和rho)
svm->save(string(FILEPATH) + “Classifier.xml“);

/*
SVM训练完成后得到的xml文件里面,有一个数组,叫做support vector,还有一个数组,叫做alph

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      11742  2015-10-30 09:27  HOG.cpp

     文件        480  2015-06-14 17:10  Pedestrians64x1283_ReadFileNames.bat

     文件      70468  2015-10-30 09:24  Pedestrians64x128Classifier.xml

     文件      39339  2015-10-30 09:24  Pedestrians64x128HOG_SVM.txt

     文件      11477  2015-06-15 21:35  Pedestrians64x128Negative00001.jpg

     文件      13598  2015-06-15 21:35  Pedestrians64x128Negative00002.jpg

     文件      12938  2015-06-15 21:35  Pedestrians64x128Negative00003.jpg

     文件      10205  2015-06-15 21:35  Pedestrians64x128Negative00004.jpg

     文件      11850  2015-06-15 21:35  Pedestrians64x128Negative00005.jpg

     文件      10799  2015-06-15 21:35  Pedestrians64x128Negative00006.jpg

     文件      13579  2015-06-15 21:35  Pedestrians64x128Negative00007.jpg

     文件      10725  2015-06-15 21:35  Pedestrians64x128Negative00008.jpg

     文件      13357  2015-06-15 21:35  Pedestrians64x128Negative00009.jpg

     文件      14305  2015-06-15 21:35  Pedestrians64x128Negative00010.jpg

     文件       9266  2015-06-15 21:35  Pedestrians64x128Negative00011.jpg

     文件       7886  2015-06-15 21:35  Pedestrians64x128Negative00012.jpg

     文件      13057  2015-06-15 21:35  Pedestrians64x128Negative00013.jpg

     文件      14991  2015-06-15 21:35  Pedestrians64x128Negative00014.jpg

     文件      10894  2015-06-15 21:35  Pedestrians64x128Negative00015.jpg

     文件       7504  2015-06-15 21:35  Pedestrians64x128Negative00016.jpg

     文件      13590  2015-06-15 21:35  Pedestrians64x128Negative00017.jpg

     文件      12755  2015-06-15 21:35  Pedestrians64x128Negative00018.jpg

     文件       8221  2015-06-15 21:35  Pedestrians64x128Negative00019.jpg

     文件       9533  2015-06-15 21:35  Pedestrians64x128Negative00020.jpg

     文件      11639  2015-06-15 21:35  Pedestrians64x128Negative00022.jpg

     文件      15275  2015-06-15 21:35  Pedestrians64x128Negative00023.jpg

     文件      11677  2015-06-15 21:35  Pedestrians64x128Negative00024.jpg

     文件      11430  2015-06-15 21:35  Pedestrians64x128Negative00025.jpg

     文件      10517  2015-06-15 21:35  Pedestrians64x128Negative00026.jpg

     文件      11527  2015-06-15 21:35  Pedestrians64x128Negative00028.jpg

............此处省略2016个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)