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 smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
Python实现的求解最大公约数算法示例
May 03 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
python3爬虫学习之数据存储txt的案例详解
Apr 24 Python
django框架model orM使用字典作为参数,保存数据的方法分析
Jun 24 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 Python
给我一面国旗 python帮你实现
Sep 30 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
Softmax函数原理及Python实现过程解析
May 22 Python
python 监控logcat关键字功能
Sep 04 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
python中最小二乘法详细讲解
Feb 19 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
php绘制一条弧线的方法
2015/01/24 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
js实时监听文本框状态的方法
2011/04/26 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
jQuery中hide()方法用法实例
2014/12/24 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
Python通过select实现异步IO的方法
2015/06/04 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
python编程嵌套函数实例代码
2018/02/11 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
python add_argument()用法解析
2020/01/29 Python
Python sorted排序方法如何实现
2020/03/31 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
python字典与json转换的方法总结
2020/12/28 Python
工程专业毕业生自荐信范文
2013/12/25 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
社区宣传标语口号
2015/12/26 职场文书
Python基础之条件语句详解
2021/06/16 Python