zoukankan      html  css  js  c++  java
  • 用opencv的traincascade训练检测器

    #1,准备正负样本

    正样本:可以一张图片上多个sample,也可以一张图片单独成一个sample,准备多个sample。生成描述文件如下所示:

    负样本:只要不含正样本,任意图片都可以作为负样本,但是最好是正样本中的背景作为负样本,同样生成如下描述性文件:

    注意:正负样本比例一般为1:3,负样本只需要名称,正样本还要个数和位置参数。

            正样本要归一化为统一大小。

            正样本描述文件与正样本放到一个文件夹pos中,负样本描述文件放到当前文件夹,还需要部分opencv的文件以备下用,文件组织如下所示:

    #2,生成正样本的.vec文件

    命令:opencv_createsamples.exe -vec pos.vec -info pos/pos.txt -bg neg.txt -w 50 -h 50 -num 1000

    网上有很多关于这个命令参数的说明,可以去了解下,也可以去createsamples.cpp中查询。

    我用的是一张图片上多个sample,所以我没有参数-w 50 -h 50,然后我希望描述文件中有的sample都写入.vec文件中,因此也没有-num 1000参数,在cmd中运行命令之后为:

    #3,开始训练

    命令:opencv_traincascade.exe -data dt -vec pos.vec -bg neg.txt -numPos 34 -numNeg 100 -numStages 16 -precalcValbufSize 200 -precalcdxBufSize 1000 -featureType HOG -w 50 -h 50

    执行命令之后,会-numStages个下面的结果:

    #4,结果文件夹

    第三步中的-data dt参数指出的中间结果和最终结果的最终存放处,cascade.xml是最终的结果。下面是结果文件夹的截图:

    还有一些细节上的问题和bug的调试没有写上来,会在后面写篇博客阐述。

  • 相关阅读:
    基于组的策略(GBP)开启新型网络设计时代
    49 多维数组(二维数组)
    48 查找
    47 排序
    46 字符数组和字符串
    45 数组应用
    44 数组
    43 C语言宏定义
    42 预处理命令
    41 函数封装练习
  • 原文地址:https://www.cnblogs.com/sophia-hxw/p/5755323.html
Copyright © 2011-2022 走看看