训练haar分类器

分类器的训练分为两个阶段:

A:创建样本,用OpenCV自带的createsamples.exe来完成。

B:训练分类器,生成xml文件,由OpenCV自带的haartraining.exe完成。

(以上用到的两个可执行文件在OpenCV的bin目录下:C:/Program Files/OpenCV/bin。以下的所有操作均在该目录下完成。)

1.     先准备好大量的正样本和负样本图片,分别存入文件夹img和-img。

2.     创建正样本文件img.txt,文件的内容如下:

    img/1.jpg 1 0 0 60 40

img/2.jpg 1 0 0 60 40

img/3.jpg 1 0 0 60 40

img/4.jpg 1 0 0 60 40

img/5.jpg 1 0 0 60 40

……

其中,后面的两个参数分别表示样本的大小为60×40。可修改

3.     创建负样本文件-img.txt,文件内容如下:

    -img/1.jpg

-img/2.jpg

-img/3.jpg

-img/4.jpg

-img/5.jpg

……

4.       createsamples训练样本:

//----- --从DOS命令行输入以下参数,生成w.vec文件-------

createsamples.exe -vec Vec_Directory.vec -num Num -w Width -h Height

l           Vec_Directory:建立此信息文件的文件名及位置。

l           Num_:正样本的数量。

l           Width:目标object最佳宽度,单位为pixel。

l           Height:目标object最佳高度,单位为pixel。

例如,输入参数为:

createsamples.exe  -info ./haartraining.txt -vec ./w.vec -num 25 -w 60 -h 40  

训练结果如下:

训练haar分类器_第1张图片

5.       haartraining训练分类器

//--------从DOS命令行输入以下参数,生成data/cascade文件夹和cascade.xml文件--------

haartraining.exe -data classifier_directory –vec data/ Vec_Directory.vec -bg negatives_info_directory.txt -npos Num_of_Positives -nneg Num_of_Negatives -nstages Num_of_Stages -nsplits Num_of_Splits -mem Mem_Allocated -mode Mode -w Width -h Height

 

l           classifier_directory:cascade classifier的数据夹位置。

l           Vec_Directory.vec:create samples时所建立信息文件的位置。

l           negatives_info_directory.txt:negative images的信息文件。

l           Num_of_Positives:positive images的数量。

l           Num_of_Negatives:negative images的数量。

l           Num_of_Stages:the number of stages you want to train。(-nstages最后的s一定要记得)

l           Num_of_Splits:默认值为1,使用2时,效果明显比1好很多,但耗时。(-nsplits亦同)

l           Mem_Allocated:分配使用的内存。

l           Mode: BASIC(预设)| CORE | ALL,BASIC用于正立的object,ALL旋转的也适用。

l           Width:目标object的宽度,必须与create samples时设定的相同。

l           Height:目标object的高度,必须与create samples时设定的相同。

例如,输入参数为:

haartraining.exe -data data/cascade -vec ./w.vec -bg ./-img.txt -mode ALL -w 60 -h 40

训练结果如下:

训练haar分类器_第2张图片

 

你可能感兴趣的:(c,xml,object,dos,basic)