20行python代码实现人脸识别


Posted in Python onMay 05, 2019

20行python代码实现人脸识别

OpenCV 是最流行的计算机视觉库,原本用 C 和 C++ 开发,现在也支持 Python。

它使用机器学习算法在图像中搜索人的面部。对于人脸这么复杂的东西,并没有一个简单的检测能对是否存在人脸下结论,而需要成千上万的特征匹配。算法把人脸识别任务分解成数千个小任务,每个都不难处理。这些任务也被称为分类器。

对于类似于人脸的对象,你或许需要不少于 6000 个分类器,每一个都需要成功匹配(当然,有容错率),才能检测出人脸。但这有一个问题:对于人脸识别,算法从左上角开始计算一个个数据块,不停问“这是张脸吗”。每个数据块有超过 6000 个检测,加起来的计算量会达到数百万级别,计算机很可能会让你等得花儿都谢了。

OpenCV 使用 cascades 来避免这种情况。Cascade 是什么?最佳答案已经在字典里了:一条瀑布或者连续瀑布。

好比连续瀑布,OpenCV cascade 把人脸检测问题分解为好几步。对于每个数据块,它都进行一个粗略、快速的检测。若通过,会再进行一个更仔细的检测,以此不断类推。该算法有 30 到 50 个这样的阶段,或者说 cascade。

只有通过全部阶段,算法才会判断检测到人脸。这样做的好处是:大多数图形都会在头几步就产生否定反馈,算法因而不需要在它上面测试所有 6000 个特征,大大节省了时间。相对于“正常流程”耗费数个小时,这可以实时实现人脸检测。

软件环境:

python3+openCV

代码:

#encoding:utf-8
import cv2
filename = "/users/Downloads/20181102142518.png"
def detect(filename):
 # haarcascade_frontalface_default.xml存储在package安装的位置
face_cascade = cv2.CascadeClassifier("/usr/local/lib/python3.6/site-packages/cv2/data/haarcascade_frontalface_default.xml")
 img = cv2.imread(filename)
 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 #传递参数是scaleFactor和minNeighbors,分别表示人脸检测过程中每次迭代时图像的压缩率以及每个人脸矩形保留近邻数目的最小值
 #检测结果返回人脸矩形数组
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
 for (x, y, w, h) in faces:
 img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
 cv2.namedWindow("Human Face Result!")
 cv2.imshow("Human Face Result!", img)
 cv2.imwrite("images/Face.jpg", img)
 cv2.waitKey(0)
 cv2.destroyAllWindows()
detect(filename)

20行python代码实现人脸识别

识别后:

20行python代码实现人脸识别

以上所述是小编给大家介绍的python人脸识别详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python中 chr unichr ord函数的实例详解
Aug 06 Python
python实现媒体播放器功能
Feb 11 Python
transform python环境快速配置方法
Sep 27 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
Python Gitlab Api 使用方法
Aug 28 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
Feb 18 Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 Python
Python函数参数定义及传递方式解析
Jun 10 Python
Python打印不合法的文件名
Jul 31 Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 Python
k-means & DBSCAN 总结
Apr 27 Python
使用python实现mqtt的发布和订阅
May 05 #Python
Python向excel中写入数据的方法
May 05 #Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 #Python
python使用MQTT给硬件传输图片的实现方法
May 05 #Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 #Python
Python实现数据结构线性链表(单链表)算法示例
May 04 #Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 #Python
You might like
php socket方式提交的post详解
2008/07/19 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
用director.js实现前端路由使用实例
2017/01/27 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
JS数组操作中的经典算法实例讲解
2017/07/26 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
[01:25]DOTA2超级联赛专访iG 将调整状态找回自己
2013/06/05 DOTA
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
python处理中文编码和判断编码示例
2014/02/26 Python
Python生成随机数组的方法小结
2017/04/15 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
python3爬取数据至mysql的方法
2018/06/26 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
浅谈python中get pass用法
2019/03/19 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
学生自我鉴定
2013/12/18 职场文书
学生个人自我鉴定范文
2014/03/28 职场文书
公证委托书
2014/08/01 职场文书
党员检讨书
2014/10/13 职场文书
联谊活动总结范文
2015/05/09 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书