• 大小: 15.58MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-07
  • 语言: 其他
  • 标签: OPENCV  svm  

资源简介

本次实验使用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个文件信息

评论

共有 条评论