• 大小: 30.93MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-05
  • 语言: 其他
  • 标签: 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  Pedestrians64x128\03_ReadFileNames.bat

     文件      70468  2015-10-30 09:24  Pedestrians64x128\Classifier.xml

     文件      39339  2015-10-30 09:24  Pedestrians64x128\HOG_SVM.txt

     文件      11477  2015-06-15 21:35  Pedestrians64x128\Negative\000001.jpg

     文件      13598  2015-06-15 21:35  Pedestrians64x128\Negative\000002.jpg

     文件      12938  2015-06-15 21:35  Pedestrians64x128\Negative\000003.jpg

     文件      10205  2015-06-15 21:35  Pedestrians64x128\Negative\000004.jpg

     文件      11850  2015-06-15 21:35  Pedestrians64x128\Negative\000005.jpg

     文件      10799  2015-06-15 21:35  Pedestrians64x128\Negative\000006.jpg

     文件      13579  2015-06-15 21:35  Pedestrians64x128\Negative\000007.jpg

     文件      10725  2015-06-15 21:35  Pedestrians64x128\Negative\000008.jpg

     文件      13357  2015-06-15 21:35  Pedestrians64x128\Negative\000009.jpg

     文件      14305  2015-06-15 21:35  Pedestrians64x128\Negative\000010.jpg

     文件       9266  2015-06-15 21:35  Pedestrians64x128\Negative\000011.jpg

     文件       7886  2015-06-15 21:35  Pedestrians64x128\Negative\000012.jpg

     文件      13057  2015-06-15 21:35  Pedestrians64x128\Negative\000013.jpg

     文件      14991  2015-06-15 21:35  Pedestrians64x128\Negative\000014.jpg

     文件      10894  2015-06-15 21:35  Pedestrians64x128\Negative\000015.jpg

     文件       7504  2015-06-15 21:35  Pedestrians64x128\Negative\000016.jpg

     文件      13590  2015-06-15 21:35  Pedestrians64x128\Negative\000017.jpg

     文件      12755  2015-06-15 21:35  Pedestrians64x128\Negative\000018.jpg

     文件       8221  2015-06-15 21:35  Pedestrians64x128\Negative\000019.jpg

     文件       9533  2015-06-15 21:35  Pedestrians64x128\Negative\000020.jpg

     文件      11639  2015-06-15 21:35  Pedestrians64x128\Negative\000022.jpg

     文件      15275  2015-06-15 21:35  Pedestrians64x128\Negative\000023.jpg

     文件      11677  2015-06-15 21:35  Pedestrians64x128\Negative\000024.jpg

     文件      11430  2015-06-15 21:35  Pedestrians64x128\Negative\000025.jpg

     文件      10517  2015-06-15 21:35  Pedestrians64x128\Negative\000026.jpg

     文件      11527  2015-06-15 21:35  Pedestrians64x128\Negative\000028.jpg

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

评论

共有 条评论