主要应用主成分分析方法降低训练样本的维度,再利用计算欧式距离的方法判定,与训练样本中最接近的人脸。代码如下。
#-*- coding:utf-8 -*-
from numpy import *
from scipy.linalg import *
from pylab import *
import testeig1
import os
from PIL import Image
path='./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.T
B=array(Image.open('./faces94/test/9338454.1.jpg').convert('L'))
B1=B.flatten()
test=B1
feature=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