读入图片,算法检测,画出矩形框

  1. import cv2
  2. from PIL import Image,ImageDraw
  3. import os
  4.  
  5. def detectFaces(image_name):
  6. img = cv2.imread(image_name)
  7. face_cascade = cv2.CascadeClassifier('../opencv-2.4.9/data/haarcascades/haarcascade_frontalface_default.xml')
  8. if img.ndim==3: # 如果是三维就转换成二维
  9. gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
  10. else:
  11. gray = img
  12. faces = face_cascade.detectMultiScale(gray,scaleFactor = 1.3,minNeighbors=4)
  13. result = []
  14. for (x,y,width,height) in faces:
  15. result.append((x,y,x+width,y+height))
  16. return result
  17.  
  18. def saveFaces(image_name):
  19. faces = detectFaces(image_name)
  20. if faces:
  21. save_dir = image_name.split('.')[0]+"_faces"
  22. os.mkdir(save_dir)
  23. count = 0
  24. for (x1,y1,x2,y2) in faces:
  25. file_name = os.path.join(save_dir,str(count)+".jpg")
  26. Image.open(image_name).crop((x1,y1,x2,y2)).save(file_name)
  27. count +=1
  28.  
  29. #在原图像上画矩形,框出所有人脸。
  30. #调用Image模块的draw方法,Image.open获取图像句柄, ImageDraw获取该图像的draw实例,然后调用该draw实例的rectangle方法画矩形 (矩形的坐标即mZdetectFaces返回的坐标),outline是矩
  31. 形线条颜色(B,G,R)。
  32. #注:原始图像如果是灰度图,则去掉outline,因为灰度图没有RGB可言。drawEyes、detectSmiles也一样
  33.  
  34. def drawFaces(image_name):
  35. faces = detectFaces(image_name)
  36. if faces:
  37. img = Image.open(image_name)
  38. draw_instance = ImageDraw.Draw(img)
  39. for(x1,y1,x2,y2) in faces:
  40. draw_instance.rectangle((x1,y1,x2,y2),outline=(25,255,0))
  41. img.save('drawFaces_'+image_name)
  42. saveFaces(image_name)
  43. image = cv2.imread('drawFaces_'+image_name)
  44. return image
  45.  
  46. if __name__=="__main__":
  47. img = drawFaces('obama.jpg')
  48. cv2.imshow("drawFaces",img)
  49. cv2.waitKey(0)
  50. cv2.destroyAllWindows()
  51.  
  1. 运行 python faceDetect.py 后效果如图:前2个识别错误!

生成人脸文件:

参考: http://blog.csdn.net/u012162613/article/details/43523507

Opencv 入门学习之图片人脸识别的更多相关文章

  1. 用opencv做的静态图片人脸识别

    这次给大家分享一个图像识别方面的小项目,主要功能是识别图像中的人脸并根据人脸在图片库找出同一个与它最相似的图片,也就是辨别不同的人. 环境:VS2013+opencv2.4.13 主要是算法:open ...

  2. OpenCV学习 物体检测 人脸识别 填充颜色

    介绍 OpenCV是开源计算机视觉和机器学习库.包含成千上万优化过的算法.项目地址:http://opencv.org/about.html.官方文档:http://docs.opencv.org/m ...

  3. OpenCV入门学习笔记

    OpenCV入门学习笔记 参照OpenCV中文论坛相关文档(http://www.opencv.org.cn/) 一.简介 OpenCV(Open Source Computer Vision),开源 ...

  4. 学习笔记TF058:人脸识别

    人脸识别,基于人脸部特征信息识别身份的生物识别技术.摄像机.摄像头采集人脸图像或视频流,自动检测.跟踪图像中人脸,做脸部相关技术处理,人脸检测.人脸关键点检测.人脸验证等.<麻省理工科技评论&g ...

  5. 我的opencv之旅:ios人脸识别

    学习opencv有一年多了,这本来是我的毕业设计的一部分,但是因为不能突出专业重点,所以换了个课题. opencv在vc.android.ios下都能用,其中vc和android下的教程和主题贴最多, ...

  6. openCV+ASM+LBP+Gabor实现人脸识别(GT人脸库)

    原理:使用GT人脸库做样本,VS2010下使用openCV2.44自带的Haar算法检測人脸区域,ASM Library特征检測,然后使用YCrCb颜色空间做肤色检測,再用LBP+Gabor小波提取特 ...

  7. python3+opencv+tkinter开发简单的人脸识别小程序

    学校里有门图像处理的课程最终需要提交一个图像处理系统, 正好之前对于opencv有些了解,就简单的写一个人脸识别小程序吧 效果图如下 笔者IDE使用Pycharm,GUI编程直接使用内置的tkinte ...

  8. C# 图片人脸识别

    此程序基于 虹软人脸识别进行的开发 前提条件从虹软官网下载获取ArcFace引擎应用开发包,及其对应的激活码(App_id, SDK_key)将获取到的开发包导入到您的应用中 App_id与SDK_k ...

  9. 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别

    这是一篇国外的文章,介绍如何通过 WebRTC.OpenCV 和 WebSocket 技术实现在 Web 浏览器上的人脸识别,架构在 Jetty 之上. 实现的效果包括: 还能识别眼睛 人脸识别的核心 ...

随机推荐

  1. ARM裸板开发:04_MMU 链接地址与运行地址不一致时,(SDRAM)初始化程序地址无关码问题的分析

    ARM裸板开发过程,程序的链接地址设置为为0x30000000,而前期的启动代码以及相关硬件的初始化代码需要在内部iRAM(steppingstone,起始地址0x0)的4K中运行.链接地址与运行地址 ...

  2. svn忽略文件后缀

    *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store Release ...

  3. Java第十次作业--多线程

    一.学习要点 认真看书并查阅相关资料,掌握以下内容: 理解进程和线程的区别 掌握Java多线程的两种实现方式和区别 理解线程对象的生命周期 熟悉线程控制的基本方法 掌握Java线程的同步机制 理解多线 ...

  4. Failed to fetch URl https://dl-ssl.google.com/android/repository/addo Android SDK更新以及ADT更新出现问题的解决办法

    问题描述 使用SDK Manager更新时出现问题Failed to fetch URL https://dl-ssl.google.com/android/repository/repository ...

  5. 简单介绍Spring的ContextLoaderListener

    在开发Spring的Web项目中,通常我们都会在web.xml中配置一个Spring的核心监听器,就是把Spring的IOC容器纳入Servlet容器中,配置如下: <listener> ...

  6. BZOJ4710: [Jsoi2011]分特产【组合数学+容斥】

    Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望 ...

  7. ubuntu编译python源码的坑

    在linux平台下编译python时只需要3条命令. 编译步骤 在github或https://www.python.org/downloads/中下载python源码 解压压缩包进路目录执行 1. ...

  8. leetcode:Maximum Depth of Binary Tree【Python版】

    # Definition for a binary tree node # class TreeNode: # def __init__(self, x): # self.val = x # self ...

  9. 【Bitmap Index】B-Tree索引与Bitmap位图索引的锁代价比较研究

    通过以下实验,来验证Bitmap位图索引较之普通的B-Tree索引锁的“高昂代价”.位图索引会带来“位图段级锁”,实际使用过程一定要充分了解不同索引带来的锁代价情况. 1.为比较区别,创建两种索引类型 ...

  10. vue-cli 构建项目中 config/index.js 文件解读

    // see http://vuejs-templates.github.io/webpack for documentation. var path = require('path') module ...