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之入门(三)序列
May 25 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
python实现京东秒杀功能
Jul 30 Python
python获取url的返回信息方法
Dec 17 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
Python pip 安装与使用(安装、更新、删除)
Oct 06 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
浅谈图像处理中掩膜(mask)的意义
Feb 19 Python
Python reques接口测试框架实现代码
Jul 28 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
Oct 12 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
新手学习PHP的一些基础知识分享
2011/07/27 PHP
PHP缓存技术的多种方法小结
2012/08/14 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
javascript数组的扩展实现代码集合
2008/06/01 Javascript
学习ExtJS border布局
2009/10/08 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
深入浅析JS Function()构造函数
2016/08/22 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
大学生职业生涯规划书模板
2014/01/18 职场文书
优秀学生获奖感言
2014/02/15 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
Redis特殊数据类型bitmap位图
2022/06/01 Redis