OpenCV4学习笔记(38)——级联检测器

今天要整理记录的笔记是OpenCV中级联检测器的使用。

在OpenCV中提供了一些级联检测器来进行目标检测,例如人脸检测、微笑检测、眼睛检测等等,在我们从官网直接下载的或者自己编译的OpenCV包中已经包含了一些训练好的模型文件,其路径是opencv\build\etc\。其中包含了haarcascadeslbpcascades这两个文件夹,其中分别对应haar级联检测器和LBP(局部二值模式Local Binary Pattern)级联检测器。

级联检测器是由多个分类器分级构成的,每一个分类器来负责判断某个特征feature是否存在,再将多个分类器进行分级联接。当对某个区域进行检测时,如果某一级分类器其负责的特征的检测结果是存在,则会将该区域进入下一级分类器的特征检测过程,逐级检测最终输出结果。如果某一级分类器负责的特征的检测结果是不存在,就直接判定该区域不是待检测目标。

在OpenCV中主要分为haar级联检测器和LBP(局部二值模式Local Binary Pattern)级联检测器。

haar级联检测器是基于Haar特征的一种检测器。Haar特征分为四类:边缘特征、线性特征、中心特征和对角线特征,针对不同目标依靠不同类型的特征组合成特征模板来表示这个目标,反映的是图像的对比度和梯度变化。每一级分类器对每个区域的特征利用特征模板进行检测,再用多级分类器组成特定目标的级联检测器,只有当某个区域满足级联检测器每一级的特征时才认定为检测目标。Haar级联检测器以浮点型数据进行计算,虽然检测速度相对比较慢,但是更精准一些。

LBP(局部二值模式Local Binary Pattern)级联检测器是基于LBP特征的检测器。遍历区域中的每一个像素的邻域,把该邻域中比中心像素值大的像素点置为1,比中心像素值小的像素点置为0,然后和位编码矩阵(顺时针按0、1、2、3、4、5、6、7、8排序的3x3矩阵)进行按位相乘操作,再对最后得到的矩阵进行求和操作,得到一个LBP特征值。LBP特征具有整体光照不变性,但是局部光照变化剧烈会造成较大影响、旋转不变性(需要经过傅里叶变换到频域空间),主要用来实现2D图像纹理分析、对象识别与检测等应用。LBP级联检测器以整型数据进行计算,其检测速度比较快。

在OpenCV中,我们需要先创建一个CascadeClassifier类的对象,作为我们的级联检测器detector。然后通过detector.load(path)的方式来加载所需的级联检测器。

在通过detector.detectMultiScale()对图像进行目标检测,其参数含义如下:
第一个参数image: CV_8U类型的检测图像;
第二个参数objects:矩形向量,其中每个矩形都包含检测到的对象,这些矩形可能部分位于原始图像的外部;
第三个参数scaleFector:表示图像缩放时尺寸减小的比例,scaleFector=(缩放前尺寸:缩放后尺寸),为double类型;当该参数小于1时会报错,默认值为1.1;该参数越大,尺寸减小得更多,检测速度更快,但可能会忽略掉一些目标;
第四个参数minNeighBors:指定每个候选矩形必须存在多少邻近候选矩形;只有当邻近候选矩形大于该参数时,该候选矩形才认定为目标,相当于一个检测阈值;
第五个参数flag:在OpenCV4中已经不需要该参数,直接置零就可以;<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值