Python学习笔记之图片人脸检测识别实例教程


Posted in Python onMarch 06, 2019

前言

随着科技的发展,人脸识别技术在许多领域得到的非常广泛的应用,手机支付、银行身份验证、手机人脸解锁等等。

识别

废话少说,这里我们使用 opencv 中自带了 haar人脸特征分类器,利用训练好的 haar 特征的 xml 文件,在图片上检测出人脸的坐标,利用这个坐标,我们可以将人脸区域剪切保存,也可以在原图上将人脸框出。

代码实现:

# -*-coding:utf8-*-#
import os
import cv2
from PIL import Image, ImageDraw
from datetime import datetime

"""
分类器 https://github.com/opencv/opencv/tree/master/data/haarcascades
安装模块:pip install Pillow pip install opencv-python
博客:https://blog.52itstyle.vip/archives/3771/
"""


def detectFaces(image_name):
 img = cv2.imread(image_name)
 face_cascade = cv2.CascadeClassifier(os.getcwd()+"\\haarcascade\\haarcascade_frontalface_alt.xml")
 if img.ndim == 3:
  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 else:
  gray = img # if语句:如果img维度为3,说明不是灰度图,先转化为灰度图gray,如果不为3,也就是2,原图就是灰度图

 faces = face_cascade.detectMultiScale(gray, 1.2, 5) # 1.3和5是特征的最小、最大检测窗口,它改变检测结果也会改变
 result = []
 for (x, y, width, height) in faces:
  result.append((x, y, x + width, y + height))
 return result


# 保存人脸图
def saveFaces(image_name):
 faces = detectFaces(image_name)
 if faces:
  # 将人脸保存在save_dir目录下。
  # Image模块:Image.open获取图像句柄,crop剪切图像(剪切的区域就是detectFaces返回的坐标),save保存。
  save_dir = image_name.split('.')[0] + "_faces"
  os.mkdir(save_dir)
  count = 0
  for (x1, y1, x2, y2) in faces:
   file_name = os.path.join(save_dir, str(count) + ".jpg")
   Image.open(image_name).crop((x1, y1, x2, y2)).save(file_name)
   count += 1


if __name__ == '__main__':
 time1 = datetime.now()
 result = detectFaces(os.getcwd()+"\\images\\gaoyuanyuan.jpg")
 time2 = datetime.now()
 print("耗时:" + str(time2 - time1))
 if len(result) > 0:
  print("有人存在!!---》人数为:" + str(len(result)))
 else:
  print('视频图像中无人!!')

 drawFaces(os.getcwd()+"\\images\\", "hanxue.jpg")
 saveFaces(os.getcwd()+\\images\\gaoyuanyuan.jpg)

识别效果图:

Python学习笔记之图片人脸检测识别实例教程

多人识别效果:

Python学习笔记之图片人脸检测识别实例教程

经过测试,最终选用了 haarcascade_frontalface_alt.xml 做人脸识别,识别率最高。

人脸检测分类器对比:

级联分类器的类型 XML文件名
人脸检测器(默认) haarcascade_frontalface_default.xml
人脸检测器(快速的Haar) haarcascade_frontalface_alt2.xml
人脸检测器(Tree) haarcascade_frontalface_alt_tree.xml
人脸检测器(Haar_1) haarcascade_frontalface_alt.xml

小结

开源的人脸检测分类器对于标准的人脸识别足够了,要想精确识别比如,侧脸、模糊、光照、遮挡的人脸,只能通过深度机器学习进一步优化识别精度和速度。

源码

https://gitee.com/52itstyle/Python/tree/master/Day09(本地下载)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python字符串逐字符或逐词反转方法
May 21 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
Jul 27 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Tornado高并发处理方法实例代码
Jan 15 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
Django 拆分model和view的实现方法
Aug 16 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
python对Excel的读取的示例代码
Feb 14 Python
学习Python列表的基础知识汇总
Mar 10 Python
python如何支持并发方法详解
Jul 25 Python
python中Pyqt5使用Qlabel标签播放视频
Apr 22 Python
详解PyTorch模型保存与加载
Apr 28 Python
详解django2中关于时间处理策略
Mar 06 #Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 #Python
Django+Xadmin构建项目的方法步骤
Mar 06 #Python
Python中最大递归深度值的探讨
Mar 05 #Python
Python小进度条显示代码
Mar 05 #Python
Python嵌套式数据结构实例浅析
Mar 05 #Python
Python字典遍历操作实例小结
Mar 05 #Python
You might like
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
初识php MVC
2014/09/10 PHP
Yii中表单用法实例详解
2016/01/05 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
javascript 模拟点击广告
2010/01/02 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
彻底理解Python list切片原理
2017/10/27 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
pygame实现成语填空游戏
2019/10/29 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
Python word文本自动化操作实现方法解析
2020/11/05 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
初婚未育证明
2014/01/15 职场文书
鼓励运动员的广播稿
2014/02/08 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
乡镇交通安全实施方案
2014/03/29 职场文书
请假条格式范文
2014/04/10 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
2014年电工工作总结
2014/11/20 职场文书
化妆品促销活动总结
2015/05/07 职场文书
居委会工作总结2015
2015/05/18 职场文书