摘要:本实验记录主要介绍如何训练分类器,这其中包括准备训练数据和运行训练程序。
OpenCV里面有两个现成的程序可以用来训练级联分类器,分别是opencv_haartraining和opencv_traincascade。opencv_traincascade是一个新程序,根据OpenCV2.x API用C++编写。
这二者主要的区别是opencv_traincascade支持Haar和 LBP两种特征,并易于增加其他的特征。与Haar特征相比,LBP特征是整数特征,因此训练和检测过程都会比Haar特征快几倍。LBP和Haar特征用于检测的准确率,是依赖训练过程中的训练数据的质量和训练参数。训练一个与基于Haar特征同样准确度的LBP的分类器是可能的。
opencv_traincascade和opencv_haartraining所输出的分类器文件格式并不相同。注意,新的级联检测接口(参考objdetect 模块中的 CascadeClassifier 类)支持这两种格式。opencv_traincascade可以用旧格式导出训练好的级联分类器。但是在训练过程被中断后再重启训练过程,opencv_trainc