资源简介
本次实验使用opencv中的ml组件中的SVM做有无行人的判别,内涵完整代码和图片数据。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#define PosSamNum 100 //正样本个数
#define NegSamNum 100 //负样本个数
std::string train_image_folder = “./“;
std::string test_image_folder = “./“;
void train(){
std::cout<<“start traning...“<
std::ifstream train_pos_file(train_image_folder + “train/pos.lst“);
std::ifstream train_neg_file(train_image_folder + “train/neg.lst“);
std::string image_name; //图片路径
cv::Mat src;
//定义HOG检测器
int descriptor_dim = 0;
//检测窗口(64128)块尺寸(1616)块步长(88)cell尺寸(88)直方图bin个数9
cv::HOGDescriptor hog(cv::Size(64128)cv::Size(1616)cv::Size(88)cv::Size(88)9);//HOG检测器,用来计算HOG描述子的
std::vector descriptors; //HOG描述子向量
cv::Mat sample_features; //所有训练样本的特征向量组成的矩阵,行数等于所有样本的个数,列数等于HOG描述子维数
cv::Mat sample_labels; //训练样本的类别向量,行数等于所有样本的个数,列数等于1;1表示有人,-1表示无人
//获取训练数据的正样本
for(int num=0; num image_name = train_image_folder + image_name;
src = cv::imread(image_name0);
cv::resize(srcsrccv::Size(96160)); //统一训练格式
if(src.empty()){
std::cout<<“no image in pos image path:“< exit(0);
}
hog.compute(srcdescriptorscv::Size(88));
if(num==0){
std::cout<<“Init feature size...“< descriptor_dim = descriptors.size();
sample_features = cv::Mat::zeros(PosSamNum+NegSamNumdescriptor_dimCV_32FC1);
sample_labels = cv::Mat::zeros(PosSamNum+NegSamNum1CV_32SC1); //注意这里必须要32SC1不能用32FC1
}
for(int i=0;iriptor_dim;i++){
sample_features.at(numi) = descriptors[i];
}
sample_labels.at(num0) = 1; //正样本类别为1,有人
std::cout<<“finish Pos “<
}
//获取训练数据的负样本
for(int num=0;num image_name = train_image_folder + image_name;
src = cv::imread(image_name0);
if(src.empty()){
std::cout<<“no image in neg image path...“< exit(0);
}
cv::resize(srcsrccv::Size(96160));
hog.compute(srcdescriptorscv::Size(88));
for(int i=0;iriptor_dim;i++){
sample_features.at(num+PosSamNumi) = descriptors[i];
}
sample_labels.at(num+PosSamNum0) = -1; //正样本类别为-1,没有人
std::cout<<“finish Neg “< }
//训练SVM分类器
std::cout<<“start svm training...“< cv::Ptr svm = cv::ml::SVM::create();
svm->setType(cv::ml::SVM::C_SVC);
svm->setKernel(cv::ml::SVM::LINEAR);
svm->setTermCriteria(cv::TermCriteria(cv::TermCriteria::MAX_ITER 100 1e-6));
svm->train(sample_featurescv::ml::ROW_SAMPLEsample_labels);
//保存SVM分类器
std::cout<<“start saving svm file...“< svm->save(“test_svm.xml“);
std::cout<<“finish training...“< return;
}
void test(std::string test_im
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-03-05 14:05 Pedestrian recognition\
文件 493420 2017-03-05 10:12 Pedestrian recognition\gcc_commands.docx
文件 4799 2017-03-05 10:05 Pedestrian recognition\test_svm.cpp
目录 0 2017-03-05 14:05 Pedestrian recognition\train\
目录 0 2017-03-05 14:05 Pedestrian recognition\train\neg\
文件 34982 2017-03-05 10:31 Pedestrian recognition\train\neg.lst
文件 75789 2017-03-05 10:33 Pedestrian recognition\train\neg\00000002a.png
文件 125260 2017-03-05 10:33 Pedestrian recognition\train\neg\00000003a.png
文件 99005 2017-03-05 10:33 Pedestrian recognition\train\neg\00000004a.png
文件 85053 2017-03-05 10:33 Pedestrian recognition\train\neg\00000005a.png
文件 117914 2017-03-05 10:33 Pedestrian recognition\train\neg\00000006a.png
文件 167692 2017-03-05 10:33 Pedestrian recognition\train\neg\00000010a.png
文件 161229 2017-03-05 10:33 Pedestrian recognition\train\neg\00000011a.png
文件 97190 2017-03-05 10:33 Pedestrian recognition\train\neg\00000012a.png
文件 167631 2017-03-05 10:33 Pedestrian recognition\train\neg\00000014a.png
文件 144751 2017-03-05 10:33 Pedestrian recognition\train\neg\00000015a.png
文件 141506 2017-03-05 10:33 Pedestrian recognition\train\neg\00000030a.png
文件 121766 2017-03-05 10:33 Pedestrian recognition\train\neg\00000033a.png
文件 130510 2017-03-05 10:33 Pedestrian recognition\train\neg\00000051a.png
文件 86046 2017-03-05 10:33 Pedestrian recognition\train\neg\00000052a.png
文件 106541 2017-03-05 10:33 Pedestrian recognition\train\neg\00000053a.png
文件 120286 2017-03-05 10:33 Pedestrian recognition\train\neg\00000054a.png
文件 78707 2017-03-05 10:33 Pedestrian recognition\train\neg\00000055a.png
文件 130531 2017-03-05 10:33 Pedestrian recognition\train\neg\00000056a.png
文件 124379 2017-03-05 10:33 Pedestrian recognition\train\neg\00000057a.png
文件 154481 2017-03-05 10:32 Pedestrian recognition\train\neg\00000058a.png
文件 143847 2017-03-05 10:32 Pedestrian recognition\train\neg\00000060a.png
文件 136301 2017-03-05 10:32 Pedestrian recognition\train\neg\00000061a.png
文件 126152 2017-03-05 10:32 Pedestrian recognition\train\neg\00000062a.png
文件 151182 2017-03-05 10:32 Pedestrian recognition\train\neg\00000068a.png
文件 94886 2017-03-05 10:32 Pedestrian recognition\train\neg\00000070a.png
............此处省略198个文件信息
相关资源
- opencv对头发图片进行颜色渲染源代码
- OpenCV基于霍夫变换实现对圆形物体的
- ippicv_2019_win_ia32_20180723_general.zip
- opencv 神经网络训练用英文字库.zip
- opencv金字塔模板匹配算法
- OpenCV级联分类器训练与使用教程与代
- VS2013+OpenCV3.4.1+OpenCVContrib(x64)编译好
- Vlc获取rtsp视频流opencv显示
- Opencv3.0.0人脸检测+识别代码,vs2012工
- ffmpeg4+OpenCV3+VS2017 H264编解码
- OpenCV与OpenGL实现增强现实
- 学习opencv 中文版 pdf 带完整目录
- ippicv_windows_20151201.zip
- 几个基于openCV开发的手势识别代码
- OpenCV3.3 mingw64位编译 包含contribute部分
- opencv3.2.0依赖项ippicv_linux_20151201.tgz
- Opencv3.2_VS2015_64bit_debug/release
- 多目标跟踪vs+opencv
- opencv 的汽车分类器的正样本。
- opencv人脸识别demo并保存头像小照片
- 人脸分析识别系统笑或不笑
- opencv 1.2 安装
- Machine Learning for OpenCV 原版PDF by Beye
- Learning-OpenCV-3_examples.zip
- Learning OpenCV Computer Vision with the OpenC
- 官方版opencv1.0 windows系统
- 二维码定位符识别带
- OpenCV3.2.0稳定版调用包
- OpenCV v320 X86开发包
- opencv3原书源码.7z
评论
共有 条评论