================================训练分类器==============================
样本准备
1: 正负样本
如:window下
a. 在正样本目录下 dir /b > pos.txt ,将生成的 摘要文件pos.txt 进行后缀替换,加上 1 0 0 19 19,
注意后面的去掉名字表示图片在 (0,0)到(19, 19 )的矩形区域里
b. 对负样本目录下 dir /b >neg.txt 备注负样本目录文件只需要去掉文件名字就好,不需要替换,后面的数字
2: 下载windows 的安装包,并安装,同时记录安装目录,假如是: openCV_path
https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.3.0/opencv-3.3.0-vc14.exe/download
opencv-3.3.0-vc14.exe
3: 找到openCV_path 目录下面的
创建opencv可以识别的数据
E:\NDK\Opencv\opencv\build\x64\vc14\bin\opencv_createsamples.exe
训练
E:\NDK\Opencv\opencv\build\x64\vc14\bin\opencv_traincascade.exe
:E:\NDK\Opencv\opencv\build\x64\vc14\bin
中的两个文件:
opencv_createsamples.exe
opencv_traincascade.exe
4:
4.1 就是加工样本数据,使用opencv_createsamples
备注配置环境变量
使用命令行:
opencv_createsamples -vec pos.vec -info face\pos.txt -bg non-face\neg.txt -w 19 -h 19 -num 472
-vec pos.vec 用pos.vec 保存执行结果
-info face\pos.txt 用于指向正样本的路径
-bg neg.txt 负样本的路径(这么写经常报错,再目录文件直接写对应的文件目录就好)
-w 19 -h 19 这个是正样本中图片中头像的宽高
-num 472 正样本的数量
执行这个命令生成 pos.vec
4.2 运用 opencv_traincascade 训练样本,得到分类器
执行命令前,我们要在当前目录创建一个data 文件夹
执行命令:opencv_traincascade -data data -vec pos.vec -bg face\neg.txt -numPos 468 -numNeg 23573 -numStages 9 -w 19 -h 19 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -mode ALL
-data data 文件夹: 用于保存训练结果和中间产物
-vec pos.vec : 4.1 的结果
-bg face\neg.txt: 负样本的路径
-numPos 468 正样本的数量 数量不能高于正样本数,注意事项,数据要注意 数量不能随便取 网上查找
vec文件中的正样本数目<= numpos+(numStages - 1)(1 - minHitRate) numpos+ s
-numNeg 23573 负样本的数量
-numStages 9 这个数字是,我们训练的层级
-w 19 -h 19
-minHitRate 0.999 -maxFalseAlarmRate 0.5 -mode ALL
备注:
可能报错:
Train dataset for temp stage can not be filled. Branch training terminated.
Cascade classifier can't be trained. Check the used training parameters.
把命令改为 将neg.txt copy 到喝pos.vec 统一级别,将里面的文件都加上文件头
比如non-face/cmu_9972.pgm 这样他就能找到文件了
opencv_traincascade -data data -vec pos.vec -bg neg.txt -numPos 468 -numNeg 23573 -numStages 9 -w 19 -h 19 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -mode ALL
说明路径问题
网友评论