准备数据
训练的过程其他方法的训练大致一样,首先是准备正样本,负样本,然后交由训练程序进行训练。
Opencv里面自带的Cascade训练器在准备数据的时候有点不一样,它要求将正样本图片写入到一个vec二进制文件中(这应该是为了在训练的时候方便并行运算),opencv提供了一个程序opencv_createsamples来生成vec文件,使用该程序需要按下面的格式准备好正负样本数据。
正样本和负样本均放在一个文件夹下,结构如下:
负样本文件夹下面有一个文件夹和一个bg.txt,存放的数据如下
/img
img1.jpg
img2.jpg
bg.txt
Bg.txt里面的数据如下
img/img1.jpg
img/img2.jpg
正样本文件夹下面有一个文件夹和一个pos.txt,存放的数据如下
/img
img1.jpg
img2.jpg
pos.txt
pos.txt除了存放图片名外,还存放了图像中目标的boundingbox的Rect,内容如下
img/img1.jpg 1 140 100 45 45
img/img2.jpg 2 100 200 50 50 50 30 25 25
文件名之后跟的是boundingbox的数目,后面就是对应的Rect
准备好这些数据之后,再执行opencv_createsamples生成vec文件,下面是一个使用示例:
将数据文件夹全部都放在e: