利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测

级联分类器是将若干个分类器进行连接,从而构成一种多项式级的强分类器。级联分类器使用前要先进行训练,怎么训练?用目标的特征值去训练,对于人脸来说,通常使用Haar特征进行训练

Haar特征是由M.Oren,C.Papageorgious等人在论文“Pedestrian detection using wavelet templates”中首次提出的,后续经过改进与发展,C.H.Messom和A.L.Barczak提出了积分直方加速Harr特征的计算方法,R.Lienhart,J.Maydt等人提出了Haar特征的多个模板种类,后逐步形成OpenCV中的Haar分类器。Haar特征也称Haar-like特征,是一种简单且高效的图像特征,其基于矩形区域相似的强度差异Haar小波。Haar特征的特点为:高类的可变性;低类的可变性;而向局部的强度差异;多尺度不变性计算效率高

OpenCV提供了用于检测目标物体的级联分类器类CascadeClassfier,其检测函数的原型及参数意义如下

void detectMultiScale( InputArray image,CV_OUT std::vector& objects,double scaleFactor = 1.1,int minNeighbors = 3, int flags = 0,Size minSize =Size(),Size maxSize = Size() );

image:当然是输入图像了,要求是8位无符号图像,即灰度图

objects:输出向量容器(保存检测到的物体矩阵)

scaleFactor:每张图像缩小的尽寸比例

minNeighbors:每个候选矩阵应包含的像素领域

flags:表示此参数模型是否更新标志位;

minSize :表示最小的目标检测尺寸;

maxSize:表示最大的目标检测尺寸;

利用Haar特征训练的级联分类器对人脸进行检测的代码如下

代码中用到的根据Haar特征训练出的级联分类器初始化数据xml文件下载链接如下:

http://pan.baidu.com/s/1mhQjWqG

 

//OpenCV版本3.0.0    
 /exe文件运行前,请把初始化XML文件放入相关工程文件下
//该程序现在不能识别戴上眼镜的脸部,因为对脸部区域的确认是能过是否有眼睛进一步确认的,虽然分类器已经使用了能检测眼镜的分类器,但效果依然不好,说明分类器还有待进一步优化训练


代码请加Q2034196302获取
代码请加Q2034196302获取
代码请加Q2034196302获取

 

运行结果如下图所示

利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测_第1张图片

利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测_第2张图片

补充说明一下

//exe文件运行前,请把初始化XML文件放入相关工程文件下
//该程序现在不能识别戴上眼镜的脸部,因为对脸部区域的确认是能过是否有眼睛进一步确认的

-------------------------------------------
如果你有图像处理开发方面的需求或想接图像处理开发方面的任务挣点零花钱,欢迎加Q2034196302咨询!
如果你有图像处理开发方面的需求或想接图像处理开发方面的任务挣点零花钱,欢迎加Q2034196302咨询!
如果你有图像处理开发方面的需求或想接图像处理开发方面的任务挣点零花钱,欢迎加Q2034196302咨询!

你可能感兴趣的:(图像处理与识别算法原理)