(个人认为在Linux上比在Windows上方便)
工具 1. opencv_traincascade
2. opencv_createsamples
3. 一台安装Linux系统的电脑
首先你的电脑上要安装OpenCV,如果没有安装终端使用命令sudo apt-get opencv -python安装(我是用Python调用opencv)
安装好了在/usr/bin/下就能找到opencv_traincascade和opencv_createsamples 如何没有可以在https://download.csdn.net/download/crazy696/10846394下载
下面将这两个文件复制到一个新建的文件夹下在这两个文件夹下新建neg,pos,data文件夹
pos用来存正片(你的脸部图片我这里用的尺寸是20*20)
neg用来存负片(无关的图片尺寸比正片要大尺寸要一样)
data保存生成的XML文件
正负片最好多一点,比例1:4 到1:5比较好
准备好了素材就可以开始了输入命令
ls ./neg/*.*>neg.txt
ls ./pos/*.*>pos.dat
打开pos.dat用替换加上尺寸等参数 .png 1 0 0 20 20
然后保存,接下来输入命令
opencv_createsamples -vec pos.vec -info pos.dat -bg neg.txt -w 20 -h 20
其中-w 20 -h 20是正片的尺寸。
生成pos.vec文件,然后输入命令
opencv_traincascade -data data -vec pos.vec -bg neg.txt -numPos 1000 -numNeg 4500 -numStages 20 -w 20 -h 20 -minHitRate 0.9999 -maxFalseAlarmRate 0.5 -mode ALL
开始训练
-numPos 1000 -numNeg 4500 是正负片的张数
numStages 20是训练的级数,级数越多时间越长但是精度越高,级数尽量多一点不然使用时屏幕上会出现很多框
接下来就是等待了.......
好了之后就会生成cascade.xml文件和一些中间文件
接下来就可以去使用自己训练的文件了。