Python基于OpnenCV实现人脸识别
2013-11-26 21:46
851 查看
最近图像工程有个人脸识别的作业,需要matlab实现。
但是最近一直在学python,感觉python也能做视觉图像处理,而且方便代码量小。
于是在网上搜了一下支持python的库
发现Opencv不错,其具体信息可以google。
说下我的环境配置吧。可能有些人在配置上会出问题。
Python2.7+numpy+opencv2.7.4
win7 64bit
其中numpy官网没有支持64位的安装包,可以在这个网站找到相应的安装包:点击打开链接
代码中用的cv2相关的函数,网上有些实现用了cv1的相关函数,还是有很大区别。具体差别请google。
源码如下:
可以看出总体效果还是不错的,其中有些人脸未能识别,其中一部分原因是和代码中
detectMultiScale函数的参数设置有关,另一方面可能和训练库:haarcascade_frontalface_alt2.xml 不够全面有关。
试了几张图片发现 正脸很容易识别,侧脸 比较难识别。改进有待继续学习。
但是最近一直在学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 不够全面有关。
试了几张图片发现 正脸很容易识别,侧脸 比较难识别。改进有待继续学习。
相关文章推荐
- 【Python】一、除法问题及基本操作(逻辑与,if替代switch)及支持中文打印
- python学习笔记:三
- python学习笔记:二
- mysql python 汉字乱码的解决方案
- Python操作MySQL以及中文乱码的问题
- 转:使用 python Matplotlib 库 绘图 及 相关问题
- Python调用MySQLdb插入中文乱码的问题
- Python 删除目录中特定文件
- python操作MySQL数据库
- Selenium-Webdriver(python) (七) --- 动态码处理
- socket client deamon
- Selenium-Webdriver(python) (六) --- Unittest框架分析
- Python填坑记——对象引用
- python中文分词工具——结巴分词
- Python抓取框架Scrapy入门教程
- python cPickle的使用
- python的logging模块
- 转:Python装饰器学习
- Python装饰器学习(九步入门)
- 转:Python装饰器与面向切面编程