注意
这个哥们写的非常详细(http://blog.csdn.net/liuqz2009/article/details/62222597)
点1.建立正负样本的时候,负样本需要一起归一化,灰度处理而且负样本是正样本1.2到1.5倍比较好,这里自己写了一个程序统一批量处理(需要可以联系)
点2.正负样本的描述文件,先将正样本放在一个文件夹内通过命令提示符cd进正样本的文件夹内 dir/b>positive.txt positive。txt是生成的文件,(不需要手动建立,但是要记得删除最后一行)然后修改。txt文件删除最后一行,并且将最后一个单词例如。jpg全部替换成jpg 1 0 0 20 20 (文件数,起始坐标,终点坐标)负样本描述文件不需要进行这样的操作
点3.生成vec文件
成功的话会有done created num samples
cd到opencv_createsamples.exe所在的文件位置
-vec 生成的vec文件的名字和文件所在的位置
-info 正样本描述文件的名字和位置
-bg 负样本描述文件的名字和位置
-h 高
-w宽
-num正样本描述文件的
opencv_createsamples.exe -vec svm/hands.vec -info pospic/positive.txt -bg negpic/negtive.txt -w 20 -h 20 -num 12
生成xml文件
vec-file has to contain >= (numPos + (numStages-1) * (1 - minHitRate) * numPos) + S
opencv_traincascade.exe -data data -vec vec/hands.vec -bg negpic/negtive.txt -npos 115 -nneg 100 -nstages 20 -nsplits 2 -minHitRate 0.999 -w 20 -h 20
这个语句是错误的会报can not get new positive sample的错误
观察了一下npos和neg的值没有发生改变
说以应该要写成
opencv_traincascade.exe -data data -vec vec/hands.vec -bg negpic/negtive.txt -numPos 115 -numNeg 100 -numStages 20 -numSplits 2 -minHitRate 0.999 -w 20 -h 20
没有缩写的
numPos is bert 0.9*vec num
点4.
然后遇到了Train dataset for temp stage can not be filled
这边一些详细的问题都有描述
负描述文件绝对路径问题:
把负样本描述文件重新编写,添加一个绝对路径(照片所在文件夹)
最终:训练完成是这个样子:有个end