至于原理这里就不再进行详细介绍了,直接说明如何进行训练。在opencv的安装目录中的bin文件夹下有两个可执行文件opencv_createsamples.exe和opencv_traincascade.exe。将这两个文件拷贝到训练文件夹下,并将正、负样本的文件夹和描述文件——positive_samples.txt和negative_samples.txt也拷贝到这个文件夹下。同时,新建两个.bat文件——create_positive_samples.bat和traincascade.bat,新建一个文件夹data。
资源打包 https://download.csdn.net/download/eddray/10546182
这样,训练目录如下:
1、制作正样本
首先是制作和收集正样本图片,并将正样本图像的大小进行统一缩放(如40*40),然后在正样本描述文件中,添加对正样本的描述,形式如下:
然后在create_positive_samples.bat文件中添加如下内容:
其中,-info字段填写正样本描述文件;-vec用于保存制作的正样本;-num制定正样本的数目;-w和-h分别指定正样本的宽和高。
保存,双击这个文件,开始制作正样本:
这样,正样本制作完成。
2、级联分类器训练
下面进行级联分类器的训练,在traincascade.bat中输入如下内容
字段说明如下:
-data:指定保存训练结果的文件夹;
-vec:指定正样本集;
-bg:指定负样本的描述文件夹;
-numPos:指定每一级参与训练的正样本的数目(要小于正样本总数);
-numNeg:指定每一级参与训练的负样本的数目(可以大于负样本图片的总数);
-numStage:训练的级数;
-w:正样本的宽;
-h:正样本的高;
-minHitRate:每一级需要达到的命中率(一般取值0.95-0.995);
-maxFalseAlarmRate:每一级所允许的最大误检率;
-mode:使用Haar-like特征时使用,可选BASIC、CORE或者ALL;
另外,还可指定以下字段:
-featureType:可选HAAR或LBP,默认为HAAR;
其他字段将不再说明。
保存,双击执行,开始漫长的训练过程(训练可中断,中断后再执行,会继续中断前的训练)
训练结束后,data文件夹下会生成如下训练结果:
cascade.xml文件即为最终的训练结果,即可拿来进行目标检测,参考OpenCV3中的级联分类器目标检测——cv::CascadeClassifier简介。