第一步:
找相关正负样本图片(越多越好),正样本存在pos_images,负样本存在neg_images。
第二步:
把找到的图片进行剪裁,尤其是正样本,最好一个图片只含有一个正样本,而且仅含有正样本,不能有别的其他的东西,否则会影响训练的结果。
剪裁完成后,要对图片进行统一的修改(包括重命名和修改统一尺寸大小),这里,重命名使用的是重命名软件(D:\软件\学习软件\rename);修改统一大小是使用的opencv王同学给的resize。
第三步:
把准备好的图片(灰度图,同一尺寸的)放到一个新建的文件夹内,进行下一步的准备,这里放在的桌面上的haar_images文件夹内,把pos_image和neg_image复制进来,然后将后面用到的两个exe文件拷贝进来, ,这两个文件从opencv源文件夹中寻找,但是由于开始试验的haartraining生成的只有txt文件,没有自动生成xml文件,不能直接使用,所以改换用opencv_traincascade.exe,在opencv文件夹中找到后复制进来。
第四步:
ask:cmd中运行了什么生成的pos_image.txt和neg_image.txt文件?????(不记得了)
answer:
直接输入“ dir /b”就可以了;
然后将txt文件复制进上一目录,就是exe所在的目录下,然后用记事本打开,将里面的图片的名字修改为这样的格式:
相应的pos的也要修改,并删除两个txt文件夹里面的最后一行,好像和文档名字差不多一样,记不清了,总之可以很明显的看出来,跟别的是不一样的。
然后就应该生成vec文件了:
进入cmd,进入opencv_createsamples.exe所在的文件目录下,也就是C:\Users\MissT\Desktop\haar_images,先运行一遍.exe文件,然后输入上面的命令行,回车,就可以了。
第五步:
使用opencv_traincascade.exe进行训练
输入d,回车,直接进入d盘目录;
输入“cd+你的exe文件所在的路径”,进入此路径;
直接输入你的exe文件的名称进行运行即可,这里不用再加cd了,否则报错;
这是初步运行opencv_traincascade.exe的结果,可以看出要运行它的话,需要的参数列表,准备这些参数就行了;
输入“cd c:”,返回到c盘;
把opencv_traincascade.exe复制到指定文件夹下后重新编译运行的结果;
正式开始训练了,训练的结果如下:
直到这里, 暂时运行结束,可能存在一定的问题,文件夹比较少,这个可以自动生成xml文件,我们在这里存在在了car0_xml文件夹里(C:\Users\MissT\Desktop\haar_images\car0_xml),自动生成的xml文件如下: 直观的看,是第一个cascade.xml包含了以下所有的xml文档中的内容,所以调用的时候只要把cascade.xml复制到相应运行的项目文件目录下就可以直接使用了。