添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

【使用方法】主要是在cmd中使用命令行操作。打开文件夹D:\opencv349\x64\vc12\bin,可以看到这三个exe文件。按住键盘shift+鼠标右键,在此处打开Powershell窗口。具体命令见 黄色背景

【样本】框选缺陷的尺寸比例与opencv_createsamples.exe(生成vec)的w、h比例一致(会自动缩放到指定的w、h)。负样本尺寸≥w、h。

以检测缺陷为例(目录见下图)。三个工具依次为:标注缺陷——生成 正样本 的vec文件——训练样本。

opencv_annotation.exe,用来标注缺陷,完成后 得到txt 文件,内容如下。框选时框住缺陷即可。

opencv_createsamples.exe, 生成vec 文件。此工具可以把框选的缺陷缩放到指定大小(默认24*24像素,注意 负样本尺寸≥此像素 ),即所谓的归一化。

opencv_traincascade.exe, 生成cascade.xml ,保存了训练得到的模型参数,此文件用于测试。

1、opencv_annotation.exe

若图片过大,不建议使用此工具来标注,不方便放大或缩小。 一般用于小于屏幕尺寸的图片

如果图片统一是等大的纯缺陷图(如20*20像素),那么可以不用此工具 ,直接仿照上图在txt中添加内容即可( 参考小技巧 ),个数、坐标统一 1 0 0 20 20。

超过屏幕尺寸的大图标注,可以用 https://github.com/tzutalin/labelImg/releases ,得到xml文件中的坐标需要自己计算宽高,仿照上图格式保存到txt中。

-a,生成的txt的路径及txt名。-i,缺陷图片的路径。如果图片高度>指定的m值,则缩小r倍显示。

cmd中输入: opencv_annotation -a=D:\data\ NgImages\ info.txt -i=D:\data\NgImages\

之后会遍历展示 D:\data\NgImages\中的缺陷图 ,鼠标左键框选缺陷后,按键盘c键确认此框,d键放弃此框,n键下一幅图,esc键退出。

完成后坐标结果会保存到 info.txt 中(注意txt与图片在同一文件夹中)。

2、opencv_createsamples.exe

删除info.txt中 D:\data\ NgImages\ ,因为 -info D:\data\ NgImages\ info.txt D:\data \ NgImages\ 会补全图片路径。

cmd中输入: opencv_createsamples -info D:\data\NgImages\info.txt -vec D:\data\ng.vec

依据正样本info.txt中坐标索引到真正框选的缺陷图,将其特征编译为二进制文件ng.vec

常用参数说明: 注意-info -vec这两个参数设置后,-bg失效,所以此处不列出。

-info  上一步中得到的info.txt的路径;
-vec  生成vec文件的路径、vec文件名;
-num 生成的正样本的最大数目,默认1000。若正样本图片数>设定值,则只生成设定值个正样本,否则生成实际个数个。
-w   正样本缩放到的宽度,默认24像素
-h   正样本缩放到的高度,默认24像素

3、opencv_traincascade.exe

此处会用到 负样本 。在负样本图片所在目录新建okInfo.txt,内容是所有负样本图片名(不带路径),如1.jpg等(如果提示错误,就把绝对路径加上如D:\data\background\1.jpg)。

opencv_traincascade -data D:\data\ -vec D:\data\ng.vec -bg D:\data\OkImages\okInfo.txt -numStages 25 -numPos 30 -numNeg 200 -umStaes 25 -w 24 -h 24 -minHitRate 0.995 -maxFalseAlarmRate 0.5 -mode ALL

注意 -w 24 -h 24与第2步骤的尺寸要一致,-numPos用于训练每层的正样本数 opencv_createsamples.exe得到的正样本数,-numNeg无要求, 参数含义不再赘述

最终得到训练好的级联分类器的最终参数文件 cascade.xml 此文件可用于测试