使用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异步任务队列示例
Apr 01 Python
Python实现从url中提取域名的几种方法
Sep 26 Python
python实现读取命令行参数的方法
May 22 Python
Python实现多线程抓取妹子图
Aug 08 Python
利用Python如何生成便签图片详解
Jul 09 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
python爬虫 正则表达式解析
Sep 28 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
python 实现多线程下载视频的代码
Nov 15 Python
python 实现rolling和apply函数的向下取值操作
Jun 08 Python
python 检测nginx服务邮件报警的脚本
Dec 31 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将数据导入到Foxmail
2006/10/09 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
为Extjs加加速(javascript加速)
2010/08/19 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python base64编码解码实例
2015/06/21 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
python检测IP地址变化并触发事件
2018/12/26 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
高中毕业生自我鉴定范文
2013/09/26 职场文书
工业自动化毕业生自荐信范文
2014/01/04 职场文书
2014年幼儿园元旦活动方案
2014/02/13 职场文书
毕业生就业意向书
2014/04/01 职场文书
松材线虫病防治方案
2014/06/15 职场文书
大学生交通专业求职信
2014/09/01 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
2014年招生工作总结
2014/11/26 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
红色经典电影观后感
2015/06/18 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
Python经常使用的一些内置函数
2022/04/11 Python