opencv训练自己的分类器

注意

这个哥们写的非常详细(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


猜你喜欢

转载自blog.csdn.net/qq_34249583/article/details/75120821
今日推荐