首页 > 代码库 > OpecnCV训练分类器详细整理
OpecnCV训练分类器详细整理
本文主要是对下面网址博客中内容的实例操作:
http://blog.csdn.net/byxdaz/article/details/4907211
在上述博客中,详细的讲述了OpenCV训练分类器的做法。虽然他的步骤很详细,但是不能被人很快的利用到实践中来。所以我归纳这些内容,能够让人很快的动手操作起来,这样对于一个新手来说一个多小时就可以很快的掌握做分类器的方法了。
一:分别准备好正负样本
将正样本剪裁统一大小,放到一个的文件夹里面。
将一些和待检测图像无关的照片放入一个文件夹里面。--负样本图片大小不得小于正样本图片大小,且负样本图片内不能有要检测图像的信息。
二:基本DOS命令行介绍
打开运行搜索框((window7系统快捷键是ctrl+R,也可以在开始页面下面找)(windows8系统在开始页面的右上角))。在运行搜索框输入“cmd”就可以找到”命令提示符控制台”;
基本命令行方法:如果想要进入某个磁盘,则输入”[磁盘符号]:”+ENTER就行了。
例如:进入F盘,在命令行输入 f: 然后回车就进入了。
在磁盘内如果要进入某个文件应输入: cd [filename] +enter就可以了。
例如:进入本磁盘的Opencv文件夹就输入: cd Opencv 然后回车就可以了。
如果要清除控制台内的内容,输入cls就可以了。
如下图:
三:负样本制作和正样本准备
采用DOS命令生成负样本文件
打开命令提示符控制台:
利用命令进入你的负样本所在文件夹:例如我的在f:\Opencv\minor
1: 输入 f: 按回车
2:输入 cd Opencv\minornumber 按回车
然后输入如下命令: dir /b >minor.dat
然后在你的负样本图片相应文件夹下就会有了minor.dat文件。用word文档打开它然后删除里面的minor.dat一行就好了。
然后就可以生成负样本描述文件minor.dat了。
负样本已经准备好了,要做正样本。同样按照上述方式生成负样本描述文件。(这是为正样本准备工作)。
我做的负样本描述文件是minor.dat,,正样本描述文件是nativesample.dat
我没有截屏,这是原来博客中的截屏。这一步比较简单。下面才是最麻烦的。
四:将正文本nativesample.dat文件修改,并改成native.vec文件。
用记事本或者word文档打开nativesample.dat,最后用替换工具将“bmp”全部替换成“bmp 1 1 1 40 40”
1 1 1 40 40 代表的是图片的数量,起始位置和宽和高。
解释上面数字的意思,有一张该类型图片,从第一张开始,到第一张结束,宽40,高40
然后用DOS命令将nativesample.dat文件转化成native.vec文件。
进入nativesample.dat所在磁盘中的主文件夹。
我的磁盘及主文件夹是:F:\Opencv
输入f : 按回车
输入 cd Opencv 回车
采用DOS命令(就是指windows运行里面的命令行代码)进行转换。
在OpenCV安装包里面的一个bin文件夹里面有opencv_createsamples.exe程序
一般的bin文件地址是(OpenCV\build\x86\vc12\bin);
例如我的opencv_createsamples.exe程序在g:\OpenCV2.0\bin\下
则输入下面命令:
“g:\OpenCV2.0\bin\opencv_createsamples.exe” -info “nativenumber\nativesamples.dat” -vec background\native.vec -num 8 -w 40 -h 40
解释:
代表opencv_createsamples.exe路径:“g:\OpenCV2.0\bin\opencv_createsamples.exe”
代表nativesamples.dat文件作为参数传递到上面程序:
-info “nativenumber\nativesamples.dat”
代表我要生成vec类型的文件,参数我要保存这个文件的路径及文件名字
-vec background\native.vec
代表我的图片数量 -num 8
宽和高 -w 40 -h 40
五:分类器训练,生成txt文件
输入命令行:
“g:\OpenCV2.0\bin\opencv_haartraining.exe” -data background -vec background\native.vec -bg minornumber\minor.dat -npos 8 -nneg 3 -mem 200 -mode ALL -w 40 -h 40
-data background 代表的是我要把文件保存的地址,如下图所示,因为是在f:\Opencv下面执行的,background是其中的子文件夹,所以不用写全路径。
-vec background\native.vec 指的是参数native.vec的文件路径
-bg minornumber\minor.dat 指的是参数背景文件,即负样本路径
其他的全部COPY就好了(链接的博客里有详细介绍)
六:因为生成的文件是txt格式,不符合分类器的最后需求
所以需要最后一步转换文件,将txt文件转换成xml文件(它才是能够成为真正意义上的可加载的分类器文件)
将正负样本的文件(native.vec,minor.dat)放到一个文件夹下面,
然后输入如下图的代码:
前面就是convert_cascade.exe的文件路径
--size指的是图片的宽和高
F:\\Opencv\\background 是该文件的地址
最后是文件要保存的地址全路径
然后回车就好了。这样一个分类器就做好了,可以进行简单的图片检测。
OpecnCV训练分类器详细整理