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

import cv2
from PIL import Image,ImageDraw
import os def detectFaces(image_name):
img = cv2.imread(image_name)
face_cascade = cv2.CascadeClassifier('../opencv-2.4.9/data/haarcascades/haarcascade_frontalface_default.xml')
if img.ndim==3: # 如果是三维就转换成二维
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
else:
gray = img
faces = face_cascade.detectMultiScale(gray,scaleFactor = 1.3,minNeighbors=4)
result = []
for (x,y,width,height) in faces:
result.append((x,y,x+width,y+height))
return result def saveFaces(image_name):
faces = detectFaces(image_name)
if faces:
save_dir = image_name.split('.')[0]+"_faces"
os.mkdir(save_dir)
count = 0
for (x1,y1,x2,y2) in faces:
file_name = os.path.join(save_dir,str(count)+".jpg")
Image.open(image_name).crop((x1,y1,x2,y2)).save(file_name)
count +=1 #在原图像上画矩形,框出所有人脸。
#调用Image模块的draw方法,Image.open获取图像句柄, ImageDraw获取该图像的draw实例,然后调用该draw实例的rectangle方法画矩形 (矩形的坐标即mZdetectFaces返回的坐标),outline是矩
形线条颜色(B,G,R)。
#注:原始图像如果是灰度图,则去掉outline,因为灰度图没有RGB可言。drawEyes、detectSmiles也一样 def drawFaces(image_name):
faces = detectFaces(image_name)
if faces:
img = Image.open(image_name)
draw_instance = ImageDraw.Draw(img)
for(x1,y1,x2,y2) in faces:
draw_instance.rectangle((x1,y1,x2,y2),outline=(25,255,0))
img.save('drawFaces_'+image_name)
saveFaces(image_name)
image = cv2.imread('drawFaces_'+image_name)
return image if __name__=="__main__":
img = drawFaces('obama.jpg')
cv2.imshow("drawFaces",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行 python faceDetect.py 后效果如图:前2个识别错误!

生成人脸文件:

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

最新文章

  1. Grafana 安装
  2. Linux 有问必答:如何知道进程运行在哪个 CPU 内核上?
  3. Ubuntu 16.04 Vysor 破解 和黑屏问题解决+ 闪屏问题解决
  4. 【风马一族_Java】如何获取ACSLL表的值
  5. mysql修改字段的语句写法
  6. CF 370
  7. [转载]字符编码笔记:ASCII,Unicode和UTF-8
  8. 读书笔记—CLR via C#线程25-26章节
  9. 作死上CODEVS,青铜题
  10. 知识扩展--if...else...与switch...case...的执行原理
  11. Entity Framework 6 自定义连接字符串ConnectionString连接MySQL
  12. 【HDU1848】Fibonacci again and again(博弈论)
  13. K-query SPOJ - KQUERY 离线 线段树/树状数组 区间大于K的个数
  14. 关于如何安装使用Git、tortoiseGit、Git@osc
  15. 抢红包js程序
  16. mysql_事务
  17. 8 -- 深入使用Spring -- 7... Spring 整合 Struts 2
  18. Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.x
  19. android中倒计时控件CountDownTimer分析
  20. sql sever 执行较大的文件脚本

热门文章

  1. MySQLzip压缩文件格式安装教程
  2. Python中的import
  3. random函数
  4. magento增加左侧导航栏
  5. xdoj-1149(多重集合+容斥原理+组合数取模)
  6. BZOJ3771: Triple【生成函数】
  7. UVA 156:Ananagrams (vector+map+sort)
  8. Appium笔记(二) 丶Appium的安装
  9. 转-spring boot web相关配置
  10. V4L2控制驱动