資源簡介
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);
}
}
}
//關(guān)閉文件??
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:“?< continue;
}
//cout?<“processing:“?<
//?歸一化
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);//這里可以設(shè)置檢測窗口步長,如果圖片大小超過64×128,可以設(shè)置winStride
double?time2?=?getTickCount();
double?elapse_ms?=?(time2?-?time1)?*?1000?/?getTickFrequency();
//cout?<“HOG?dimensions:“?<riptors.size()?< //cout?<“Compute?time:“?<
//保存到特征向量矩陣中
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分類器訓練///////////////////////////////////////////////////
//設(shè)置參數(shù),注意Ptr的使用
Ptr?svm?=?SVM::create();
svm->setType(SVM::C_SVC);
svm->setKernel(SVM::LINEAR);//注意必須使用線性SVM進行訓練,因為HogDescriptor檢測函數(shù)只支持線性檢測?。。?br/> svm->setTermCriteria(TermCriteria(CV_TERMCRIT_ITER?1000?FLT_EPSILON));
//使用SVM學習?????????
svm->train(featureVectorOfSample?ROW_SAMPLE?classOfSample);
//保存分類器(里面包括了SVM的參數(shù),支持向量α和rho)
svm->save(string(FILEPATH)?+?“Classifier.xml“);
/*
SVM訓練完成后得到的xml文件里面,有一個數(shù)組,叫做support?vector,還有一個數(shù)組,叫做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.xm
?????文件??????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個文件信息
- 上一篇:ESP8266開發(fā)
- 下一篇:圖片選擇器
評論
共有 條評論