python+opencv实现的简单人脸识别代码示例


Posted in Python onNovember 14, 2017

#
源码如下:

#!/usr/bin/env python
#coding=utf-8
import os
from PIL import Image, ImageDraw
import cv
def detect_object(image):
 '''检测图片,获取人脸在图片中的坐标'''
 grayscale = cv.CreateImage((image.width, image.height), 8, 1)
 cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)
 cascade = cv.Load("/opt/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt_tree.xml")
 rect = cv.HaarDetectObjects(grayscale, cascade, cv.CreateMemStorage(), 1.1, 2,
  cv.CV_HAAR_DO_CANNY_PRUNING, (20,20))
 result = []
 for r in rect:
  result.append((r[0][0], r[0][1], r[0][0]+r[0][2], r[0][1]+r[0][3]))
 return result
def process(infile):
 '''在原图上框出头像并且截取每个头像到单独文件夹'''
 image = cv.LoadImage(infile);
 if image:
  faces = detect_object(image)
 im = Image.open(infile)
 path = os.path.abspath(infile)
 save_path = os.path.splitext(path)[0]+"_face"
 try:
  os.mkdir(save_path)
 except:
  pass
 if faces:
  draw = ImageDraw.Draw(im)
  count = 0
  for f in faces:
   count += 1
   draw.rectangle(f, outline=(255, 0, 0))
  drow_save_path = os.path.join(save_path,"out.jpg")
  im.save(drow_save_path, "JPEG", quality=80)
 else:
  print "Error: cannot detect faces on %s" % infile
if __name__ == "__main__":
 process("/Users/zhangdebin/Documents/checkFace2.jpg")

示例图片1:

python+opencv实现的简单人脸识别代码示例

可以看出,对于比较干净的人脸头像,使用opencv库haarcascade_frontalface_alt_tree.xml的识别精度很高(这张达到了100%),同时,对于表情变化的人脸也有很强的鲁棒性。

示例图片2:

python+opencv实现的简单人脸识别代码示例

但是,对于上传的比较随意的头像照片,比如示例图片2这些有帽子、眼镜遮挡的人脸图片,识别效果就会很差,本组只有唯一一个没有帽子遮挡的人脸被识别成功

本次只是简单的测试了下,python使用opencv库的人脸特征进行人脸识别的效果,仅供初学参考。

总结

以上就是本文关于python+opencv实现的简单人脸识别代码示例的全部内容,希望对大家有所帮助,感兴趣的朋友可以参阅本站:

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python 文件操作实现代码
Oct 07 Python
Python合并字符串的3种方法
May 21 Python
详解Python各大聊天系统的屏蔽脏话功能原理
Dec 01 Python
Python 多线程实例详解
Mar 25 Python
python如何在列表、字典中筛选数据
Mar 19 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
Python实现平行坐标图的绘制(plotly)方式
Nov 22 Python
python读取ini配置文件过程示范
Dec 23 Python
Python处理PDF与CDF实例
Feb 26 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
python安装后的目录在哪里
Jun 21 Python
Python常用断言函数实例汇总
Nov 30 Python
解读! Python在人工智能中的作用
Nov 14 #Python
python利用有道翻译实现"语言翻译器"的功能实例
Nov 14 #Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 #Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
Nov 14 #Python
Python中import机制详解
Nov 14 #Python
AI人工智能 Python实现人机对话
Nov 13 #Python
Python编程实现蚁群算法详解
Nov 13 #Python
You might like
PHP 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
谨慎使用PHP的引用原因分析
2012/09/06 PHP
PHP小技巧之函数重载
2014/06/02 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
js 数组操作代码集锦
2009/04/28 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
Python2与Python3的区别实例总结
2019/04/17 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
高二化学教学反思
2014/01/30 职场文书
保护环境建议书400字
2014/05/13 职场文书
学风建设演讲稿
2014/09/12 职场文书
2015年测量员工作总结
2015/05/23 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
只用Python就可以制作的简单词云
2021/06/07 Python