准备需要材料
正样本图片100张 生成正样本的info.dat文件 依次类推100张,第一列是图片路径;
{alert type="warning"} 图片最好是绝对路径 {/alert} 第二列是图片中能检测出的样本表数量,由于训练的目标是小狗,所以图片中只有一只狗。当然如果有两只就写2; 第三第四列是图像的坐标,(0,0)就行; 第五第六列是图像宽和高,需要注意是一样的,宽高比需要一样的。
img/1-0001.png 1 0 0 114 114
img/1-0002.png 1 0 0 386 386
img/1-0003.png 1 0 0 321 321
img/1-0004.png 1 0 0 224 224
img/1-0005.png 1 0 0 212 212
img/1-0006.png 1 0 0 197 197
img/1-0007.png 1 0 0 157 157
img/1-0008.png 1 0 0 192 192
负样本图片100张 需要生成负样本图片的路径,保存为txt
D:\opencv\cascadetrain\negative\img\1-f001.png
D:\opencv\cascadetrain\negative\img\1-f002.png
D:\opencv\cascadetrain\negative\img\1-f003.png
生成正样本的vec文件 使用 opencv_createsamples.exe
opencv_createsamples.exe -info D:\opencv\cascadetrain\positive\info.dat -vec D:\opencv\cascadetrain\dog.vec -num 100 -bgcolor 0 -bgthresh 0 -w 24 -h 24
-info 是正样本的信息文件的位置,包含了所有的正样本的图片的信息 -vec 是生成vec要放的位置最好把文件夹给生成好,然后vec文件由软件生成 -num 是正样本的数量 -bgcolor 是颜色的通道吧,我也不记得了 是彩色还是灰色 -bgthresh 不知道是啥 写0吧 -w-h 是宽和高 要一样 不要写太大
有了vec文件,有了负样本的位置的txt文件,就开始使用opencv_traincascade.exe 训练
opencv_traincascade.exe -data D:\opencv\cascadetrain\result -vec D:\opencv\cascadetrain\mysamples_344.vec -bg D:\opencv\cascadetrain\negative\bg1.txt -numPos 85 -numNeg 400 -numStages 10 -featureType HAAR -w 24 -h 24
-data 是存放所有训练结果的文件夹,提前生成好吧 -vec 正样本图片的vec,上面生成好了的 -bg 就是包含负样本的位置的txt文件信息 -numPos 正样本的数量 -numNeg 负样本的数量 -numStages 训练的级别越大越好,越大电脑越卡,看着办 -featureType 模型的方式 就选 HAAR 就好 -w-h 这个长和宽要和生成vec时候的长宽一致,不然报错