Python基于OpnenCV实现人脸识别

最近图像工程有个人脸识别的作业,需要matlab实现。
但是最近一直在学python,感觉python也能做视觉图像处理,而且方便代码量小。
于是在网上搜了一下支持python的库
发现Opencv不错,其具体信息可以google。
说下我的环境配置吧。可能有些人在配置上会出问题。
Python2.7+numpy+opencv2.7.4 
win7 64bit
其中numpy官网没有支持64位的安装包,可以在这个网站找到相应的安装包:点击打开链接
代码中用的cv2相关的函数,网上有些实现用了cv1的相关函数,还是有很大区别。具体差别请google。
源码如下:

import numpy
import cv2
import os

def process(srcFile):
  face_cascade = cv2.CascadeClassifier('haarcascades\haarcascade_frontalface_alt2.xml')
  img = cv2.imread(srcFile)
  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  faces = face_cascade.detectMultiScale(gray, 1.2, 1)
  for(x,y,w,h) in faces:
    cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
   # cv2.imshow('Rectangle an image', img)
  
  save_path= os.path.splitext(files)[0]+'_out.jpg'
  print 'save',save_path
  cv2.imwrite(save_path,img)
   # cv2.waitKey(0)
  #  cv2.destroyAllWindows()
# def getDir:
#   return os.path.split(os.path.realpath(__file__))[0]

if __name__ =="__main__":

  for files in os.listdir(os.getcwd()):
    if os.path.splitext(files)[1] == '.jpg' or '.JPG':
       print files
       process(files)

   


  

把要处理的图片文件(jpg格式)和py文件放在同一个文件夹里面!
效果如下:

可以看出总体效果还是不错的,其中有些人脸未能识别,其中一部分原因是和代码中
detectMultiScale函数的参数设置有关,另一方面可能和训练库:haarcascade_frontalface_alt2.xml 不够全面有关。
试了几张图片发现 正脸很容易识别,侧脸 比较难识别。改进有待继续学习。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值