使用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字符串详细介绍
May 09 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
书单|人生苦短,你还不用python!
Dec 29 Python
pyqt5 从本地选择图片 并显示在label上的实例
Jun 13 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
Oct 04 Python
Python 中pandas索引切片读取数据缺失数据处理问题
Oct 09 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
Django数据结果集序列化并展示实现过程
Apr 22 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 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
PHP全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
destoon之一键登录设置
2014/06/21 PHP
跟我学Laravel之快速入门
2014/10/15 PHP
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
Python读取指定日期邮件的实例
2019/02/01 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
节省高达65%的城市景点费用:Go City
2019/07/06 全球购物
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
学校校庆演讲稿
2014/05/22 职场文书
学风建设演讲稿
2014/09/12 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
报名委托书
2015/01/29 职场文书
2016国培研修心得体会
2016/01/08 职场文书
七年级作文之下雨天
2019/12/23 职场文书
python获取字符串中的email
2022/03/31 Python