opencv训练分级器的简介:
OpenCV提供了两个程序可以训练自己的级联分类器opencv_haartraining与opencv_traincascade。opencv_traincascade是一个新程序,使用OpenCV
2.x API 以C++编写。这二者主要的区别是opencv_traincascade支持 Haar和 LBP
(Local BinaryPatterns)两种特征,并易于增加其他的特征。与Haar特征相比,LBP特征是整数特征,因此训练和检测过程都会比Haar特征快几倍。LBP和Haar特征用于检测的准确率,是依赖训练过程中的训练数据的质量和训练参数。训练一个与基于Haar特征同样准确度的LBP的分类器是可能的。
与其他分类器模型的训练方法类似,同样需要训练数据与测试数据;其中训练数据包含正样本pos与负样本neg。训练程序opencv_haartraining.exe与opencv_traincascade.exe对输入的数据格式是有要求的,所以需要相关的辅助程序:
opencv_createsamples 用来准备训练用的正样本数据和测试数据。opencv_createsamples 能够生成能被opencv_haartraining 和 opencv_traincascade 程序支持的正样本数据。它的输出为以 *.vec 为扩展名的文件,该文件以二进制方式存储图像。
opencv训练分级器的步骤
1、准备训练数据
2、训练级联分类器
3、测试级联分级器的性能
4、利用训练好的级联分级器做目标检测、
准备训练数据
准备正样本:
1、首先将左右的正样本图像截图——最小外接矩形(减少计算难度,减少不必要的干扰)。注意:所有的样本背景最好一致
2、将图像归一化处理、利用美图秀秀等软件将所有的图像转换成大小一致的图像(推荐尺寸25*25,减少计算难度、避免内存不够用)
3、将图像灰度处理GRAY
4、生成pos.text 格式为:图片路径 检测目标在图片中的个数 起始监测点坐标(x,y) 图片大小(w,h)
5、训练分级器 dos运行opencv_createsamples.exe -vec pos.vec -info pos.txt -num 100 -w 30 -h 30 得到得到pos.vec文件
准备负样本
1、.不要求样本尺寸,但要大于等于正样本的大小;且负样本不能重复,要增大负样本的差异性。
2、负样本灰度化,同正样本操作相同。
地址:https://www.cnblogs.com/linmengran/p/6514410.html