opencv_traincascade

opencv3

第一步:整理正负样本

创建一个文件夹,假设为haar,在haar 文件夹下面建一个文件夹pos,写两行代码,将收集到的正样本存入到pos文件夹中,大小统一,假设为20×20,且为灰度图,打开cmd窗口,dir /b *.* > pos.data, 打开pos.data,将最后一行非图像删除,假设图像均为jpg格式, 打开pos.data进行替换,将"jpg" 替换为"jpg 1 0 0 20 20"。负样本没有限制,打开负样本文件夹,打开cmd窗口,输入:dir /b/s/w *.* > neg.data, 打开neg.data,将非图像路径删除, 将neg.data拷贝到haar文件夹下。


第二部:编译opencv

下载opencv, 下载tbb,因为加入tbb,训练级联器的时候才使用多线程。

打开cmake,编译opencv, 点击configure, configure done之后,在Search口输入tbb查找, 选中WITH_TBB后面的方框,再次点击Configure, 在TBB_INCLUDE_DIRS的后面输入tbb的路径(截止到include),再次点击configure,如果TBB_LIB_DIR, TBB_STDDEF_PATH,后面已经填好了,直接generate即可。否则,在后面分别添加tbb的lib路径和tbb_stddef.h的路径。


打开编译的opencv路径,打开opencv.sln,注意vs版本对照,与编译时的一致。编译opencv_traincascade和opencv_createSample,到...bin/release路径下,将dll和exe拷贝到haar文件夹下。


第三部:准本训练

打开cmd窗口,输入opencv_traincascade,然后回车,会看到详细的参数说明。输入opencv_createsamples,也会看到详细的参数说明。首先生成正样本的数据,假设200个样本,num就写200吧,。

opencv_createsamples.exe -info pos/pos.data -vec pos.vec -num 200 -w 20 -h 20

生成pos.vec之后,开始训练, 建立一个文件夹xml,用以保存中间数据,即-data的参数,默认会开启全部线程

opencv_traincascade.exe -data xml -vec pos.vec -bg neg.data -numPos 180 -numNeg 540 -w 20 -h 20 -mode ALL

然后就等待吧。最后训练结果会保存成一个xml,用opencv的函数可以载入使用。


你可能感兴趣的:(图像处理)