级联分类器是将若干个分类器进行连接,从而构成一种多项式级的强分类器。级联分类器使用前要先进行训练,怎么训练呢?用目标的特征值去训练,对于人脸来说,通常使用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<Rect>& 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文件下载链接如下:

链接:https://pan.baidu.com/s/1HJ_E1Oq2bVENnIQ40YoRYg 
提取码:5t7i

//OpenCV版本3.0.0    //exe文件运行前,请把初始化XML文件放入相关工程文件下
//该程序现在不能识别戴上眼镜的脸部,因为对脸部区域的确认是能过是否有眼睛进一步确认的#include <opencv2/opencv.hpp>
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
CascadeClassifier face_cascade, eyes_cascade;
String window_name = "Face Detection";
void detectFaces(Mat frame) {std::vector<Rect> faces;Mat frame_gray;// 灰度变换cvtColor(frame, frame_gray, COLOR_BGR2GRAY);// 直方图均衡equalizeHist(frame_gray, frame_gray);// 多尺度人脸检测face_cascade.detectMultiScale(frame_gray, faces,1.1, 3,0|CASCADE_SCALE_IMAGE, Size(30, 30));// 人脸检测结果判定for(size_t i = 0; i < faces.size(); i++){// 检测到人脸中心Point center(faces[i].x + faces[i].width/2, faces[i].y + faces[i].height/2);Mat face = frame_gray(faces[i]);std::vector<Rect> eyes;// 在人脸区域检测人眼eyes_cascade.detectMultiScale(face, eyes, 1.1, 2,0 |CASCADE_SCALE_IMAGE, Size(30, 30) );if(eyes.size() > 0)// 绘制人脸ellipse(frame, center, Size(faces[i].width/2, faces[i].height/2),0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );}imshow( window_name, frame );
}
int main()
{// 摄像头读取VideoCapture cap(0); Mat frame;// 初始化haar级联人脸分类器XMLface_cascade.load("haarcascade_frontalface_alt.xml"); // 初始化haar级联人眼分类器XMLeyes_cascade.load("haarcascade_eye_tree_eyeglasses.xml"); while(cap.read(frame)) {// 人脸检测detectFaces(frame); //等待30ms,如果有按键按下,则返回按值值,即非0值,如果30ms没有按键按下,则返回-1值if( waitKey(30) >= 0)    break;}return 0;
}

运行结果如下图所示:

补充说明一下:

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

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

  1. Python+OpenCV:级联分类器(Cascade Classifier)

    Python+OpenCV:级联分类器(Cascade Classifier) 目标 We will learn how the Haar cascade object detection works ...

  2. Qt +opencv 通过级联分类器训练的模型进行识别(车辆识别+人脸识别)

    有不对的或更好的方法欢迎交流 一些内容可参照这篇文章:https://blog.csdn.net/m0_64596200/article/details/126748697?spm=1001.2014 ...

  3. opencv实战3: CascadeClassifier+Haar特征进行人脸检测

    1.级联分类器CascadeClassifier OpenCV官方文档:https://docs.opencv.org/3.4.3/d5/d54/group__objdetect.html 分类器: ...

  4. haar分类器详解(Haar特征,积分图,adaboost算法,筛选式级联分类器),DCG介绍 --文献阅读报告《基于素描对视频的人脸识别研究》

    基于素描对视频的人脸识别--haar分类器详解,haar特征,adaboost,级联强分类器,积分图,DCG 背景 算法总体流程 1.预处理--识别出人脸并将人脸图像标准化 haar特征 积分图--加 ...

  5. [Opencv]Cascade级联分类器

    文章目录​​​​​​ 训练级联分类器 使用级联分类器检测 总结 前言 最近在尝试识别指定物体,之前用Opencv自带的级联分类器做过人脸识别感觉效果不错,所以想用级联分类器来做其它物体的识别. 选择学 ...

  6. 【OpenCV】 级联分类器训练模型

    目录 一:OpenCV级联分类器概念 二:OpenCV级联分类器操作步骤 三:样本采集工作原理分析一 四:样本采集工作原理分析二 五:创建自己的级联分类器 5.1 创建自己的级联分类器第一步 5.2 ...

  7. OpenCV的级联分类器训练

    使用增强级联的弱分类器包括两个主要阶段:训练和检测阶段.对象检测教程中有描述使用基于 HAAR 或 LBP 模型的检测阶段.这里主要介绍训练增强分类器级联所需的功能,包括:准备训练数据.执行实际模型训 ...

  8. 2020-用多通道卷积神经网络学习单类特征用于人脸表现攻击检测

    2020年,Anjith George等人,期刊:TIFS,CCFA刊,Learning One Class Representations for Face Presentation Attack ...

  9. 利用OpenCV实现人眼的检测与跟踪

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 本篇博文的基础是  利用OpenCV的级联分类器 ...

最新文章

  1. 通过init进程看如何启动第一个应用程序
  2. DeepFM调参总结
  3. linux新手常用命令
  4. 学期计算机教案,学年第2学期课程教案-计算机组成原理-陈立伟
  5. 5-条件(如果是这样该怎么办?)
  6. C++ Primer 第二章 学习笔记及习题答案
  7. Acrobat Pro DC 2021 for Mac(pdf编辑器)中文版
  8. 【九天教您南方cass 9.1】 10 DTM土方计算的四种方法
  9. 多媒体计算机未来发展的方向,计算机多媒体技术发展趋势
  10. 计算机视觉论文-2021-06-02
  11. 留言列表模板HTML代码
  12. VMware Esxi7.0.3f集成最新网卡-v2(2022年7月版)
  13. 汇编语言程序设计51单片机
  14. mysql从库binlog_转 mysql 主从复制以及binlog 测试 (5.7)
  15. 《别让这种习惯毁掉你的一生,改变他!》
  16. mysql查看数据库状态
  17. C++ - 求一个正整数的二进制表示中1的个数
  18. 《白帽子讲Web安全》memo0
  19. python面向对象高级
  20. 分享|雄安新区2021年大数据研究报告(附PDF)

热门文章

  1. python语言入门w-Python算法基础
  2. python中处理日期和时间的标准模块是-Python时间相关处理
  3. python语言入门编程猫-编程猫推出海龟编程器,打造Python教育产品矩阵
  4. python软件怎么用-如何使用Python自动控制windows桌面
  5. python1000个常用代码-1000个常用的Python库和示例代码
  6. python打开excel表格-如何从python中用excel打开excel工作表?
  7. java和python的web自动化有什么区别-Java Web开发和Python Web开发之间的区别
  8. python绘制条形图-Python数据分析条形图的各种绘制方式
  9. 学python多长时间能够精通-学Python多长时间?老男孩Python技术培训
  10. python批量下载文件-python 从远程批量下载文件到本地