Opencv3.1
级联分类器整个过程主要包括:样本准备,数据生成,训练,交叉验证,检测。涉及的源代码主要包括:
1) 样本标注的工具:applications->opencv_annotation opencv_annotation.exe
注意:在标注的过程中,需要注意标注程序要能正确读取到相应的图像。每次画完标注框,需要按C键才能保存该标注框。
2) 测试或训练样本的生成工具:applications->opencv_createsamples opencv_createsamples.exe
说明:将样本以向量的方式写到vec文件中,给定正样本进行变形的方法没有成功,目前只试过第三种方法:给定正样本图像集合文件(即第一步获得的标注文件),将样本文件的每个样本逐个写到vec文件中,超过样本图像数后会输出parse error,但不是报错,属正常结束。
3) 级联分类器训练工具: applications->opencv_traincascade中的cascadeclassifier中的CvCascadeClassifier类,主要用于train,但具有私有方法predict; opencv_traincascade.exe (之前的诸如:贝叶斯,k-nn,SVM,决策树,随机树等等,在old_ml中。但在boost中的CvCascadeBoost类,也有相关的公有的训练和预测方法,与级联分类器的区别需要进一步确认)
说明:bgName参数为负样本描述文件(.dat),文件中包含一系列的图像文件名,这些图像将被随机选作物体的背景,具体可以是每一行为一个包含绝对路径的背景图像文件名。
4) 级联分类器检测:可以利用modules->opencv_objdetect中cascadedetect中的CascadeClassifierImpl类;也可以利用opencv2/objdetect.hpp定义的CascadeClassifier类,具体在modules->opencv_objdetect->Src中cascadedetect.cpp中实现(基于BaseCascadeClassifier类实现);也可以利用训练工具中的predict方法进行预测。
5) Opencv提供了测试方法:tests accuracy->opencv_test_objdetect的测试方法;tests performance->opencv_perf_objdetect的测试方法。
级联分类器的训练过程参考:
http://docs.opencv.org/3.1.0/dc/d88/tutorial_traincascade.html#gsc.tab=0