使用python-cv2实现Harr+Adaboost人脸识别的示例


Posted in Python onOctober 27, 2020

Haar特征

哈尔特征使用检测窗口中指定位置的相邻矩形,计算每一个矩形的像素和并取其差值。然后用这些差值来对图像的子区域进行分类。

haar特征模板有以下几种:

使用python-cv2实现Harr+Adaboost人脸识别的示例

以第一个haar特征模板为例

使用python-cv2实现Harr+Adaboost人脸识别的示例

计算方式

1.特征 = 白色 - 黑色(用白色区域的像素之和减去黑色区域的象征之和)

2.特征 = 整个区域 * 权重 + 黑色 * 权重

使用haar模板处理图像

从图像的起点开始,利用haar模板从左往右遍历,从上往下遍历,并设置步长,同时考虑图像大小和模板大小的信息

假如我们现在有一个 1080 * 720 大小的图像,10*10 的haar模板,并且步长为2,那么我我们所需要的的计算量为: (1080 / 2 * 720 / 2) * 100 * 模板数量 * 缩放 约等于50-100亿,计算量太大。

积分图

使用积分图可大量减少运算时间,实际上就是运用了前缀和的原理

使用python-cv2实现Harr+Adaboost人脸识别的示例

Adaboost分类器

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

算法流程

该算法其实是一个简单的弱分类算法提升过程,这个过程通过不断的训练,可以提高对数据的分类能力。整个过程如下所示:

1. 先通过对N个训练样本的学习得到第一个弱分类器;
2. 将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器 ;
3. 将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器;
4. 最终经过提升的强分类器。即某个数据被分为哪一类要由各分类器权值决定。

我们需要从官网下载俩个Adaboost分类器文件,分别是人脸和眼睛的分类器:
下载地址:https://github.com/opencv/opencv/tree/master/data/haarcascades

使用python-cv2实现Harr+Adaboost人脸识别的示例

使用python-cv2实现Harr+Adaboost人脸识别的示例

代码实现

实现人脸识别的基本步骤:

1.加载文件和图片
2.进行灰度处理
3.得到haar特征
4.检测人脸
5.进行标记

我们使用cv2.CascadeClassifier()来加载我们下载好的分类器。

然后我们使用detectMultiScale()方法来得到识别结果

import cv2
import numpy as np
import matplotlib.pyplot as plt
# 1.加载文件和图片 2.进行灰度处理 3.得到haar特征 4.检测人脸 5.标记

face_xml = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_xml = cv2.CascadeClassifier('haarcascade_eye.xml')
img = cv2.imread('img.png')
cv2.imshow('img', img)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 1.灰色图像 2.缩放系数 3.目标大小
faces = face_xml.detectMultiScale(gray, 1.3, 5)
print('face = ',len(faces))
print(faces)
#绘制人脸,为人脸画方框
for (x,y,w,h) in faces:
  cv2.rectangle(img, (x,y), (x + w, y + h), (255,0,0), 2)
  roi_face = gray[y:y+h,x:x+w]
  roi_color = img[y:y+h,x:x+w]
  eyes = eye_xml.detectMultiScale(roi_face)
  print('eyes = ',len(eyes))
  for (ex,ey,ew,eh) in eyes:
    cv2.rectangle(roi_color, (ex,ey),(ex + ew, ey + eh), (0,255,0), 2)
cv2.imshow('dat', img)
cv2.waitKey(0)
face = 1
[[133 82 94 94]]
eyes = 2

使用python-cv2实现Harr+Adaboost人脸识别的示例

使用python-cv2实现Harr+Adaboost人脸识别的示例

到此这篇关于使用python-cv2实现Harr+Adaboost人脸识别的示例的文章就介绍到这了,更多相关python cv2 人脸识别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python isinstance函数介绍
Apr 14 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
python实现微信远程控制电脑
Feb 22 Python
python 显示数组全部元素的方法
Apr 19 Python
Python学习_几种存取xls/xlsx文件的方法总结
May 03 Python
python使用RNN实现文本分类
May 24 Python
python opencv判断图像是否为空的实例
Jan 26 Python
python统计中文字符数量的两种方法
Jan 31 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
Python实现socket库网络通信套接字
Jun 04 Python
5道关于python基础 while循环练习题
Nov 27 Python
基于python实现坦克大战游戏
Oct 27 #Python
Django xadmin安装及使用详解
Oct 26 #Python
python实现网页录音效果
Oct 26 #Python
python实现录音功能(可随时停止录音)
Oct 26 #Python
Python用dilb提取照片上人脸的示例
Oct 26 #Python
python用tkinter实现一个gui的翻译工具
Oct 26 #Python
Docker如何部署Python项目的实现详解
Oct 26 #Python
You might like
实现“上一页”和“下一页按钮
2006/10/09 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
php读取csc文件并输出
2015/05/21 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
Laravel下生成验证码的类
2017/11/15 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
2015/12/30 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
python 正则式 概述及常用字符
2009/05/07 Python
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
Python生成随机密码的方法
2017/06/16 Python
python实现录音小程序
2020/10/26 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
介绍一下grep命令的使用
2015/06/12 面试题
计算机系本科生求职信
2014/05/31 职场文书
师德师风自我评价范文
2014/09/11 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
80后婚前协议书范本
2014/10/24 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
2014年校长工作总结
2014/12/11 职场文书
领导参观欢迎词
2015/01/26 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书