准备数据
训练的过程其他方法的训练大致一样,首先是准备正样本,负样本,然后交由训练程序进行训练。
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文件,下面是一个使用示例:

本文介绍了如何使用OpenCV的opencv_createsamples和opencv_traincascade工具训练Cascade分类器,包括准备正负样本数据,生成vec文件,以及调整训练参数等步骤。重点强调了-w和-h参数对于训练时间和效果的影响,推荐使用LBP特征类型进行快速训练。
1110

被折叠的 条评论
为什么被折叠?



