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根据unicode判断语言类型实例代码
Jan 17 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
Python读取excel中的图片完美解决方法
Jul 27 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
python语音识别实践之百度语音API
Aug 30 Python
Python之循环结构
Jan 15 Python
Python中psutil的介绍与用法
May 02 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 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 curl获取网页内容(IPV6下超时)的解决办法
2013/07/16 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
iframe实用操作锦集
2014/04/22 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
Keras实现DenseNet结构操作
2020/07/06 Python
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
护理学毕业生自荐信
2013/10/02 职场文书
《争吵》教学反思
2014/02/15 职场文书
高一新生军训感言
2014/03/02 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
护理实习生带教计划
2015/01/16 职场文书
报案材料怎么写
2015/05/25 职场文书
航班延误投诉信
2015/07/02 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书