前面的文章中提到,利用opencv+python的组合可以方便的提取出图像中的人脸。当然,opencv自带的提取算法还是有很大缺陷的,不过并不妨碍我们的应用。接下来,利用python对已经获许的人脸图片进行训练,从而可以识别出人脸。本文利用的PCA算法,实现起来较为容易,利用了numpy库。程序还只是一个算法实现,界面和交互都还不太友好,以后我会对其进行改进,并把它扩展为一个可应用的程序。
详细看代码和注释。
#coding=gbk
"""基于PCA算法的人脸识别
@author: jingyiliscut@gmail.com
@time: 2012.10
"""
from PIL import Image, ImageDraw
import numpy
import cv
import os
import sys
IMAGE_SIZE = (40,40)
def createDatabase(path, number):
"""从指定的路径path中处理number个按照顺序命名的人脸图片,成为一个矩阵"""
imageMatrix = []
for i in range(1,number+1):
image = Image.open(path+'\\'+str(i)+'.jpg')
image = image.resize(IMAGE_SIZE) #缩小图片
grayImage = image.convert('L')