对输入图片进行行人检测时由于图片的大小不一样,所以要用到多尺度检测。这里是用hog类的方法detectMultiScale。

函数原型:

HOGDescriptor::detectMultiScale(const GpuMat& img, vector&

found_locations, doublehit_threshold=0, Size win_stride=Size(),

Size padding=Size(), double scale0=1.05, int group_threshold=2)

作用:

该函数表示对输入的图片img进行多尺度行人检测 img为输入待检测的图片;found_locations为检测到目标区域列表;

参数说明:

参数3为程序内部计算为行人目标的阈值,也就是检测到的特征到SVM分类超平面的距离;

参数4为滑动窗口每次移动的距离。它必须是块移动的整数倍;

参数5为图像扩充的大小;

参数6 :scale0为比例系数,即被检测图像每一次被压缩的比例,这个可以从OPENCV的hog.cpp源文件中看出:

for( levels = 0; levels < nlevels; levels++

) { //若待检测图像的尺寸小于检测窗口的尺寸,则停止检测 levelScale.push_back(scale); if( cvRound(img.cols/scale) < winSize.width

|| cvRound(img.rows/scale) < winSize.height

|| scale0 <= 1

) break; scale *=

scale0; }之前一直理解的是检测窗口会不断的按照比例系数放大,其实检测窗口是固定不变的,是待检测图像按照比例系数缩小。

参数7为组阈值,即校正系数,当一个目标被多个窗口检测出来时,该参数此时就起了调节作用,为0时表示不起调节作用。

最后对检测出来的目标矩形框,要采用一些方法处理,比如说2个目标框嵌套着,则选择最外面的那个框。

因为hog检测出的矩形框比实际人体框要稍微大些,所以需要对这些矩形框大小尺寸做一些调整。

在进行交通灯检测的程序编写中,经过各种调整,还是使用detectMultiScale(src, found,0,Size(8,8),

Size(32,32), 1.05,

2)最终通过了,其他的参数一直报错。其中第五个参数为Size(0,0)时,检测出的矩形框数量为65个,Size(32,32)时检测出的矩形框为83个,调整为Size(64,64)后检测到的矩形框增加为109个,说明这个参数的尺寸越大,好像检测量越大,检测出的矩形框越多。暂时是这么认为的,以后想清楚了再来更新吧。

下面的一组实验结果是对第4个参数的理解,第四个参数越大,检测窗口移动的步长越大,检测的目标个数越小。(检测是在训练样本数量很少的情况下完成的,提高训练样本数量可以增加检测的精度)

下图是参数为detectMultiScale(src, found,0,Size(4,4), Size(0,0), 1.05,

2)的检测结果,矩形框个数为38个

下图是参数为detectMultiScale(src, found,0,Size(16,16), Size(0,0), 1.05,

2)的检测结果,矩形框个数为88个

当第4个参数为Size(64,64)时,检测窗口仅为12个。detectMultiScale(src,

found,0,Size(32,32), Size(0,0), 1.05, 2)

detectmultiscale函数参数含义_OpenCV detectMultiScale函数相关推荐

  1. detectmultiscale函数参数含义_OpenCV人脸识别--detectMultiScale函数

    首先上两张图. 现在要对上面两张图进行人脸识别. 一.Haar特征分类器介绍 Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值.包括人脸.眼睛.嘴唇等等. Haar特征 ...

  2. sklearn的train_test_split()各函数参数含义解释(非常全)

    sklearn的train_test_split()各函数参数含义解释(非常全) sklearn的train_test_split()各函数参数含义解释(非常全) - The-Chosen-One - ...

  3. C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)

    每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...

  4. 习题 9.5 建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

    C++程序设计(第三版) 谭浩强 习题9.5 个人设计 习题 9.5 建立一个对象数组,内放5个学生的数据(学号.成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成 ...

  5. go 函数参数nil_go内置函数make

    go内置函数make主要用于创建map, slice, chan等数据结构.下面简要分析下编译器对于make的处理过程. 一 内置函数的定义 universe.go源文件定义了go内置函数列表,Mai ...

  6. 【Groovy】Groovy 方法调用 ( Java 中函数参数是接口类型 | 函数参数是接口类型 可以 直接传递闭包 )

    文章目录 一.Java 中函数参数是接口类型 二.函数参数是接口类型 可以 直接传递闭包 三.完整代码示例 一.Java 中函数参数是接口类型 在 Android 中经常使用如下形式的接口 : 定义一 ...

  7. python函数参数定义顺序_Python函数定义-位置参数-返回值

    原标题:Python函数定义-位置参数-返回值 1 函数介绍 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多 ...

  8. “引用作为函数参数”与 “引用作为函数返回值”

    一.引用作为函数参数 作为函数参数时引用有两种原因: 1.在函数内部会对此参数进行修改:2.提高函数调用和运行效率. 关于第一点,都知道C++里提到函数就会提到形参和实参.如果函数的参数实质就是形参, ...

  9. python函数参数为列表_python函数中把列表(list)当参数时的入坑与出坑

    在Python函数中,传递的参数如果默认有一个为 列表(list),那么就要注意了,此处有坑. 入坑 挖坑 def f(x,li=[]): for i in range(x): li.append(i ...

最新文章

  1. React Bind Handle的思考
  2. SSH 本地和服务器传输
  3. 企业 MySQL 优化实施方案
  4. 达梦工作笔记-达梦客户端,执行命令后要保存退出,才生效
  5. ubuntu安装 rust nightly_一起学Rust编程「1」:开发环境
  6. 机皇再翻车!微信、支付宝关停其指纹支付功能,用户难以原谅
  7. 通过request读取所有参数
  8. Halcon PDF文档(hdevelop_users_guide)学习总结之三——关于变量窗口的小知识
  9. JUnit测试用例– Eclipse和Maven
  10. Java后端开发常用规范
  11. 初出茅庐的小李第84篇博客之驱动WS2812B灯带(一)
  12. 智能计算之蚁群算法(ACO)介绍
  13. JAVA学习,你必读的5本JAVA书籍
  14. mysql 分页查询数据重复出现
  15. SCAU 正n多边形类的定义与使用
  16. 短视频运营的目标:引流并转化客户
  17. 锤子终究走起了小米的路子
  18. 荣耀手机不出鸿蒙系统,惊喜!4部荣耀手机可升级至华为鸿蒙系统,网友表示:终于等到了...
  19. 2022 ICPC Gran Premio de Mexico 1ra Fecha(一)
  20. 账号密码登录和注册业务逻辑

热门文章

  1. 为什么电脑磁盘从C盘开始,之前的A盘和B盘呢?
  2. CNN模型之SqueezeNet
  3. 深度学习必备---用Keras和直方图均衡化---数据增强
  4. 使用OpenCV实现道路车辆计数
  5. 分享一下我为什么可以获得ssp
  6. 干货|深度学习之过拟合和正则化
  7. L-SNET:从区域定位到尺度不变的医学图像分割
  8. 基于OpenCV的焊件缺陷检测
  9. centos上安装anaconda并配置虚拟环境
  10. [转] 先验概率and后验概率