目标检测 机器学习方法 静态场景 测试车辆检测


利用机器学习方法(分类)实现静态场景下的测试车辆检测  利用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  CVtestCVtest123.jpg

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

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

     文件       2455  2016-01-19 21:01  CVtestCVtestDebugCVtest.log

     文件        590  2016-01-19 21:01  CVtestCVtestDebugCVtest.tlogcl.command.1.tlog

     文件      17562  2016-01-19 21:01  CVtestCVtestDebugCVtest.tlogCL.read.1.tlog

     文件        392  2016-01-19 21:01  CVtestCVtestDebugCVtest.tlogCL.write.1.tlog

     文件        167  2016-01-19 21:01  CVtestCVtestDebugCVtest.tlogCVtest.lastbuildstate

     文件       1904  2016-01-19 21:01  CVtestCVtestDebugCVtest.tloglink.command.1.tlog

     文件       4684  2016-01-19 21:01  CVtestCVtestDebugCVtest.tloglink.read.1.tlog

     文件        376  2016-01-19 21:01  CVtestCVtestDebugCVtest.tloglink.write.1.tlog

     文件     625664  2016-01-19 21:01  CVtestCVtestDebugvc120.idb

     文件    1363968  2016-01-19 21:01  CVtestCVtestDebugvc120.pdb

     文件     517685  2016-01-19 21:01  CVtestCVtestDebug源.obj

     文件     547373  2016-01-19 21:03  CVtestCVtestHOGDetectorForOpenCV.txt

     文件       6377  2016-01-19 11:25  CVtestCVtest
egSampName.txt

     文件       7029  2016-01-19 12:37  CVtestCVtestposSampName.txt

     文件     781963  2016-01-19 20:55  CVtestCVtestSVM_HOG.xml

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

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

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

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

     文件     149504  2016-01-19 21:01  CVtestDebugCVtest.exe

     文件    1293956  2016-01-19 21:01  CVtestDebugCVtest.ilk

     文件    2444288  2016-01-19 21:01  CVtestDebugCVtest.pdb

     文件       1717  2016-01-19 10:55  CVtestopencv249.props

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)