Python基于Numpy和PIL库的PCA人脸识别
来源:互联网 发布:穿越火线fps软件 编辑:程序博客网 时间:2024/06/05 09:24
主要应用主成分分析方法降低训练样本的维度,再利用计算欧式距离的方法判定,与训练样本中最接近的人脸。代码如下。
#-*- coding:utf-8 -*-from numpy import *from scipy.linalg import *from pylab import *import testeig1import osfrom PIL import Imagepath='./faces94/'A=zeros([1,36000])A=uint8(A)fjpg=[]for filename in os.listdir(path): if filename.endswith('.jpg'): fjpg.append(filename)for i in range(len(fjpg)): fjpg[i]=path+fjpg[i] B=array(Image.open(fjpg[i]).convert('L')) B=B.flatten() A=append(A,B)A=A.reshape(len(fjpg)+1,36000)A1=delete(A,0,0)A2=A1.TB=array(Image.open('./faces94/test/9338454.1.jpg').convert('L'))B1=B.flatten()test=B1feature=4#特征选择数I1,lowD,percent1,Q,n,t=testeig1.testeig(A2,feature)Ous=zeros(n)pj_train=dot(lowD.T,I1)#影像投影坐标t*n,每一列为对应图像在子空间的坐标pj_test=dot(lowD.T,test)#计算测试影像在子空间的坐标for j in range(0,n):#计算欧式距离 for i in range(0,t): Ous[j]+=(pj_train[i,j]-pj_test[i])**2a=argmin(Ous)+1lowD1=lowD[:,0]lowD2=lowD1.reshape(200,180)pl=Image.fromarray(lowD2)pl.show()print '图',fjpg[a-1],'与测试图像最接近\n',Ous,'\n','使用前',feature,'特征的信息完整度',percent1,'%'#Ous越小越接近,
训练和测试的头像如下:
图 ./faces94/cwang.1.jpg 与测试图像最接近
[ 5.41676578e+15 7.81703951e+15 3.80191725e+15 4.10364707e+16
1.61495155e+16 8.77888351e+15 3.53679326e+15 6.17202650e+15]
使用前 4 特征的信息完整度 77.468618641 %
0 0
- Python基于Numpy和PIL库的PCA人脸识别
- python 基于numpy和PIL的图像局部熵计算方法
- 利用Python实现基于PCA算法的人脸识别
- python基于PIL和tesseract的验证码识别
- 基于PCA和SVM的人脸识别
- 基于PCA和SVM的人脸识别系统
- 基于PCA和SVM的人脸识别
- 基于LBP和PCA的人脸性别识别方法
- 基于PCA和SVM的人脸识别
- 基于PCA和SVM的人脸识别之一.基本知识
- 基于PCA和SVM的人脸识别系统
- 基于PCA的人脸识别算法
- 基于pca的人脸识别
- 基于PCA的人脸识别步骤
- 基于PCA的人脸识别
- 基于PCA的人脸识别流程
- 基于python和numpy的KNN手写识别
- PCA人脸识别的python实现
- 用C一步步开发web服务器(1)
- android远程服务之简易登录
- 当子元素有 margin 属性,父元素高度问题
- 插入10000条随机字符串记录
- USACO 2.2.1 Preface Numbering
- Python基于Numpy和PIL库的PCA人脸识别
- android fragment test
- XGBoost推导过程
- 几款开源的hybird移动app框架分析
- CF-Codeforces Round #210 (Div. 1)-A-Levko and Array Recovery
- 同步和阻塞
- android DOM、 SAX 、PULL 解析XML---练习
- (EM算法)The EM Algorithm 和 混合高斯模型Demo(转载)
- Java中String字符串初始化细节