资源简介
基于HOG特征提取的svm行人头肩训练,提供训练集和测试集的图片,结果导出在txt文件中。
代码片段和文件信息
// cv_test.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include “opencv.hpp“
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main(int argc char** argv)
{
vector img_path;//输入文件名变量
vector img_catg;
int nLine = 0;
string buf;
ifstream svm_data(“../SVM_DATA.txt“);//首先,这里搞一个文件列表,把训练样本图片的路径都写在这个txt文件中,使用bat批处理文件可以得到这个txt文件
unsigned long n;
while (svm_data)//将训练样本文件依次读取进来
{
if (getline(svm_data buf))
{
nLine++;
if (nLine % 2 == 0)//这里的分类比较有意思,看得出来上面的SVM_DATA.txt文本中应该是一行是文件路径,接着下一行就是该图片的类别,可以设置为0或者1,当然多个也无所谓
{
img_catg.push_back(atoi(buf.c_str()));//atoi将字符串转换成整型,标志(01),注意这里至少要有两个类别,否则会出错
}
else
{
img_path.push_back(buf);//图像路径
}
}
}
svm_data.close();//关闭文件
int nImgNum = nLine / 2; //读入样本数量 ,因为是每隔一行才是图片路径,所以要除以2
////样本矩阵,nImgNum:横坐标是样本数量, WIDTH * HEIGHT:样本特征向量,即图像大小
Mat data_mat(nImgNum 1764 CV_32FC1); //这里第二个参数,即矩阵的列是由下面的descriptors的大小决定的,可以由descriptors.size()得到,且对于不同大小的输入训练图片,这个值是不同的
data_mat.setTo(0);
//类型矩阵存储每个样本的类型标志
Mat res_mat(nImgNum 1 CV_32FC1);
res_mat.setTo(0);
Mat src;
Mat trainImg;//需要分析的图片,这里默认设定图片是64*64大小,所以上面定义了1764,如果要更改图片大小,可以先用debug查看一下descriptors是多少,然后设定好再运行
//开始搞HOG特征
for (string::size_type i = 0; i != img_path.size(); i++)
{
src = imread(img_path[i].c_str() 1);
if (&src == NULL)
{
cout << “ can not load the image: “ << img_path[i].c_str() << endl;
continue;
}
cout << “ processing “ << img_path[i].c_str() << endl;
resize(src trainImg Size(64 64)CV_8UC3); //读取图片
HOGDescriptor *hog = new HOGDescriptor(Size(64 64) Size(16 16) Size(8 8) Size(8 8) 9); //具体意思见参考文章12
vectordescriptors;//结果数组
hog->compute(trainImg descriptors Size(1 1) Size(0 0)); //调用计算函数开始计算
cout << “HOG dims: “ << descriptors.size() << endl;
//CvMat* SVMtrainMat=cvCreateMat(descriptors.size()1CV_32FC1);
n = 0;
for (vector::iterator iter = descriptors.begin(); iter != descriptors.end(); iter++)
{
data_mat.at(i n)= *iter;//把HOG存储下来
n++;
}
//cout<rows< res_mat.at(i 0)= img_catg[i];
cout << “ end processing “ << img_path[i].c_str() << “ “ << img_catg[i] << endl;
}
SVM svm /*= CvSVM()*/;//新建一个SVM
SVMParams param;//这里是参数
TermCriteria criteria;
criteria = TermCriteria(CV_TERMCRIT_EPS 1000 FLT_EPSILON);
param = SVMParams(SVM::C_SVC SVM::RBF 10.0 0.09 1.0 10.0 0.5 1.0 NULL criteria);
/*
SVM种类:CvSVM::C_SVC
Kernel的种类:CvSVM::RBF
degree:10.0(此次不使用)
gamma:8.0
coef0:1.0(此次不使用)
C:10.0
nu:0.5(此次不使用)
p:0.1(此次不使用)
然后对训练数据正规化处理,并放在CvMat型的数组里。
*/
//☆☆☆☆☆☆☆☆☆(5)SVM学习☆☆☆☆☆☆☆☆☆☆☆☆
svm.train(data_mat res_mat Mat() Mat() param);//训练啦
//☆☆利用训练数据和确定的学习参数进行SVM学习☆☆☆☆
svm.save(“SVM_DATA.xml“);
//检测样本
Mat
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-10-07 00:08 HOG_SVM(opencv2)\
目录 0 2017-10-07 00:08 HOG_SVM(opencv2)\Datas\
文件 9210 2017-10-06 23:40 HOG_SVM(opencv2)\Datas\Te1.jpg
文件 8337 2017-10-05 23:25 HOG_SVM(opencv2)\Datas\Te10.jpg
文件 14351 2017-10-05 23:26 HOG_SVM(opencv2)\Datas\Te11.jpg
文件 10232 2017-10-05 23:27 HOG_SVM(opencv2)\Datas\Te12.jpg
文件 13158 2017-10-05 22:41 HOG_SVM(opencv2)\Datas\Te2.jpg
文件 8176 2017-10-05 22:42 HOG_SVM(opencv2)\Datas\Te3.jpg
文件 6995 2017-10-05 22:42 HOG_SVM(opencv2)\Datas\Te4.jpg
文件 2841 2017-10-05 22:44 HOG_SVM(opencv2)\Datas\Te5.jpg
文件 6537 2017-10-05 22:45 HOG_SVM(opencv2)\Datas\Te6.jpg
文件 3016 2017-10-05 22:45 HOG_SVM(opencv2)\Datas\Te7.jpg
文件 4529 2017-10-05 22:46 HOG_SVM(opencv2)\Datas\Te8.jpg
文件 16990 2017-10-05 23:24 HOG_SVM(opencv2)\Datas\Te9.jpg
文件 13019 2017-10-05 22:32 HOG_SVM(opencv2)\Datas\Tr1.jpg
文件 11508 2017-10-05 23:19 HOG_SVM(opencv2)\Datas\Tr10.jpg
文件 13000 2017-10-05 23:20 HOG_SVM(opencv2)\Datas\Tr11.jpg
文件 12585 2017-10-05 23:21 HOG_SVM(opencv2)\Datas\Tr12.jpg
文件 1663 2017-10-05 23:30 HOG_SVM(opencv2)\Datas\Tr13.jpg
文件 3606 2017-10-05 23:31 HOG_SVM(opencv2)\Datas\Tr14.jpg
文件 5016 2017-10-05 23:31 HOG_SVM(opencv2)\Datas\Tr15.jpg
文件 5724 2017-10-05 23:32 HOG_SVM(opencv2)\Datas\Tr16.jpg
文件 11657 2017-10-05 22:33 HOG_SVM(opencv2)\Datas\Tr2.jpg
文件 14154 2017-10-05 22:34 HOG_SVM(opencv2)\Datas\Tr3.jpg
文件 16569 2017-10-05 22:35 HOG_SVM(opencv2)\Datas\Tr4.jpg
文件 4345 2017-10-05 22:39 HOG_SVM(opencv2)\Datas\Tr5.jpg
文件 4128 2017-10-05 22:36 HOG_SVM(opencv2)\Datas\Tr6.jpg
文件 2790 2017-10-05 22:37 HOG_SVM(opencv2)\Datas\Tr7.jpg
文件 3644 2017-10-05 22:38 HOG_SVM(opencv2)\Datas\Tr8.jpg
文件 8113 2017-10-05 23:19 HOG_SVM(opencv2)\Datas\Tr9.jpg
目录 0 2017-10-07 00:08 HOG_SVM(opencv2)\Debug\
............此处省略49个文件信息
相关资源
- 遗传算法优化支持向量机算法
- 经典的行人检测算法,利用HOG和SVM实
- 基于HOG-CSLBP与深度学习的跨年龄人脸
- 基于GA参数优化的在线学习SVM算法及其
- H.264 SVC FSVM测试模型
- 在Yale 人脸库上运用PCA+SVM的方法实现
- 利用PCA和SVM进行人脸识别
- SVM工具箱,用于数据的回归、预测以
- 图像分类SVM
- 基于 SVM 的中文微博情感分析的研究
- libsvm_V3.1_[FarutoUltimate3.1Mcode]
- SVM-支持向量机基本原理及应用
- 彩色图像的SVM分割,Opencv实现
- 行人检测程序
- SVM车牌识别资料 libsvm
- SVMCLS 文本自动分类器可编译Release完整
- Fundamental Principles of Optical Lithography
- 蓝牙核心技术-HOGP
- 留一法 LibSVM格式文件
- 浙江大学SVM(支持向量机)经典课件
- HOG_SVM_DATA
- svm源码实现
- LBP实验数据
- opencv图像分类样本
- 文本分类器,KNNSVM贝叶斯等都有
- 基于svm的中文文本自动分类系统的语
- 新手学习opencv--基于Hog的视频行人检测
- HOG特征可视化C代码
- 关于svm和神经网络相结合的论文-svm
- opencv视频行人检测1HOG+SVM
评论
共有 条评论