• 大小: 9.55MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-13
  • 语言: C/C++
  • 标签: 静态场景  

资源简介

利用机器学习方法(分类)实现静态场景下的测试车辆检测  利用C语言或者Open_CV库,或者是MATLAB软件编写实现静态场景下的测视车辆检测。需使用机器学习方法。代码可以通过一个主函数直接运行出实验结果。  Data文件夹中包含train_34x94(训练集)和test(测试集)两个文件夹。其中,train_34x94文件夹中的数据用于训练模型,包含pos文件夹(内有550个正例样本)和neg文件夹(内有500个负例样本); Test文件夹中的数据用于测试。  在Test测试集中的总体检测性能的评价指标为Recall、Precision 和F-measure,写出对算法的性能评价和对实现中遇到问题的理解。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
using namespace cv;

#define PosSamNO 549    //正样本个数
#define NegSamNO 499    //负样本个数

#define TRAIN false    //是否进行训练true表示重新训练,false表示读取xml文件中的SVM模型

//HardExample必须设置为0,因为特征向量矩阵和特征类别矩阵的维数初始化时用到这个值
#define HardExampleNO 0  


//继承自CvSVM的类,因为生成setSVMDetector()中用到的检测子参数时,需要用到训练好的SVM的decision_func参数,
//但通过查看CvSVM源码可知decision_func参数是protected类型变量,无法直接访问到,只能继承之后通过函数访问
class MySVM : public CvSVM
{
public:
//获得SVM的决策函数中的alpha数组
double * get_alpha_vector()
{
return this->decision_func->alpha;
}

//获得SVM的决策函数中的rho参数即偏移量
float get_rho()
{
return this->decision_func->rho;
}
};


int main()
{
//检测窗口(9434)块尺寸(88)块步长(21)cell尺寸(44)直方图bin个数9
HOGDescriptor hog(Size(94 34) Size(8 8) Size(2 1) Size(4 4) 9);//HOG检测器,用来计算HOG描述子的
int DescriptorDim;//HOG描述子的维数,由图片大小、检测窗口大小、块大小、细胞单元中直方图bin个数决定
MySVM svm;//SVM分类器

//若TRAIN为true,重新训练分类器
if (TRAIN)
{
string ImgName;//图片名(绝对路径)
ifstream finPos(“posSampName.txt“);//正样本图片的文件名列表
ifstream finNeg(“negSampName.txt“);//负样本图片的文件名列表

Mat sampleFeatureMat;//所有训练样本的特征向量组成的矩阵,行数等于所有样本的个数,列数等于HOG描述子维数
Mat sampleLabelMat;//训练样本的类别向量,行数等于所有样本的个数,列数等于1;1表示有人,-1表示无人


//依次读取正样本图片,生成HOG描述子
for (int num = 0; num {
cout << “处理:“ << ImgName << endl;
ImgName = “C:\\Users\\张建虎\\Desktop\\CVtest\\train_34x94\\pos\\“ + ImgName;//加上正样本的路径名
Mat src = imread(ImgName);//读取图片

vector descriptors;//HOG描述子向量
hog.compute(src descriptors Size(2 1));//计算HOG描述子,检测窗口移动步长(21)
//cout<<“描述子维数:“<riptors.size()<
//处理第一个样本时初始化特征向量矩阵和类别矩阵,因为只有知道了特征向量的维数才能初始化特征向量矩阵
if (0 == num)
{
DescriptorDim = descriptors.size();//HOG描述子的维数
//初始化所有训练样本的特征向量组成的矩阵,行数等于所有样本的个数,列数等于HOG描述子维数sampleFeatureMat
sampleFeatureMat = Mat::zeros(PosSamNO + NegSamNO + HardExampleNO DescriptorDim CV_32FC1);
//初始化训练样本的类别向量,行数等于所有样本的个数,列数等于1;1表示正样本,0表示负样本
sampleLabelMat = Mat::zeros(PosSamNO + NegSamNO + HardExampleNO 1 CV_32FC1);
}

//将计算好的HOG描述子复制到样本特征矩阵sampleFeatureMat
for (int i = 0; iriptorDim; i++)
sampleFeatureMat.at(num i) = descriptors[i];//第num个样本的特征向量中的第i个元素
sampleLabelMat.at(num 0) = 1;//正样本类别为1
}

//依次读取负样本图片,生成HOG描述子
for (int num = 0; num {
cout << “处理:“ << ImgName << endl;
ImgName = “C:\\Users\\张建虎\\Desktop\\CVtest\\train_34x94\\neg\\“ + ImgName;//加上负样本的路径名
Mat src = imread(ImgName);//读取图片

vector descriptors;//HOG描述子向量
hog.compute(src descriptors Size(2 1));//计算HOG描述子,检测窗口移动步长(21)
//cout<<“描述子维数:“<riptors.size()<
//将计算好的HOG描述子复制到样本特征矩阵sampleFeatureMa

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      77692  2012-10-07 14:28  CVtest\CVtest\123.jpg

     文件       4106  2016-01-19 11:15  CVtest\CVtest\CVtest.vcxproj

     文件        944  2016-01-19 11:15  CVtest\CVtest\CVtest.vcxproj.filters

     文件       2455  2016-01-19 21:01  CVtest\CVtest\Debug\CVtest.log

     文件        590  2016-01-19 21:01  CVtest\CVtest\Debug\CVtest.tlog\cl.command.1.tlog

     文件      17562  2016-01-19 21:01  CVtest\CVtest\Debug\CVtest.tlog\CL.read.1.tlog

     文件        392  2016-01-19 21:01  CVtest\CVtest\Debug\CVtest.tlog\CL.write.1.tlog

     文件        167  2016-01-19 21:01  CVtest\CVtest\Debug\CVtest.tlog\CVtest.lastbuildstate

     文件       1904  2016-01-19 21:01  CVtest\CVtest\Debug\CVtest.tlog\link.command.1.tlog

     文件       4684  2016-01-19 21:01  CVtest\CVtest\Debug\CVtest.tlog\link.read.1.tlog

     文件        376  2016-01-19 21:01  CVtest\CVtest\Debug\CVtest.tlog\link.write.1.tlog

     文件     625664  2016-01-19 21:01  CVtest\CVtest\Debug\vc120.idb

     文件    1363968  2016-01-19 21:01  CVtest\CVtest\Debug\vc120.pdb

     文件     517685  2016-01-19 21:01  CVtest\CVtest\Debug\源.obj

     文件     547373  2016-01-19 21:03  CVtest\CVtest\HOGDetectorForOpenCV.txt

     文件       6377  2016-01-19 11:25  CVtest\CVtest\negSampName.txt

     文件       7029  2016-01-19 12:37  CVtest\CVtest\posSampName.txt

     文件     781963  2016-01-19 20:55  CVtest\CVtest\SVM_HOG.xml

     文件       8321  2016-01-19 21:01  CVtest\CVtest\源.cpp

     文件   15794176  2016-01-19 21:03  CVtest\CVtest.sdf

     文件        964  2016-01-19 11:13  CVtest\CVtest.sln

    ..A..H.     25088  2016-01-19 21:03  CVtest\CVtest.v12.suo

     文件     149504  2016-01-19 21:01  CVtest\Debug\CVtest.exe

     文件    1293956  2016-01-19 21:01  CVtest\Debug\CVtest.ilk

     文件    2444288  2016-01-19 21:01  CVtest\Debug\CVtest.pdb

     文件       1717  2016-01-19 10:55  CVtest\opencv249.props

     文件      25458  2002-02-17 07:57  CVtest\test\test-0.bmp

     文件      38890  2002-02-17 07:57  CVtest\test\test-1.bmp

     文件      31078  2002-02-17 07:57  CVtest\test\test-10.bmp

     文件      22022  2002-02-17 07:57  CVtest\test\test-100.bmp

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

评论

共有 条评论

相关资源