%基于PCA神经网络人脸识别
clear all
clc
close all
%调uigetdir函数指定所用训练的图片以及测试图片路径名称
TrainDatabasePath = uigetdir('D:\Program Files\MATLAB\R20016a\work', 'Select training database path' );
TestDatabasePath = uigetdir('D:\Program Files\MATLAB\R20016a\work', 'Select test database path');
%用户输入所要测试的图片代号
prompt = {'Enter test image name (a number between 1 to 12):'};
%输入图片窗口名
dlg_title = 'Image';
%初始化图片号
num_lines= 1;
%设置默认为1
def = {'1'};
%定义测试图片的路径以及格式并导入测试图片
TestImage = inputdlg(prompt,dlg_title,num_lines,def);
TestImage = strcat(TestDatabasePath,'\',char(TestImage),'.jpg');
im = imread(TestImage);
%调用子函数导入文件夹并对图片转化成数组的形式,将图片的数组姜维并转化为一维数组
%以及计算的最小欧氏距离所得的图片调出获得图片的路径
T = CreateDatabase(TrainDatabasePath);
[m, A, Eigenfaces] = EigenfaceCore(T);
OutputName = Recognition(TestImage, m, A, Eigenfaces);
%读取所识别人脸的路径
SelectedImage = strcat(TrainDatabasePath,'\',OutputName);
SelectedImage = imread(SelectedImage);
%在命令窗口显示所匹配的人脸的图片名称
str = strcat('Matched image is : ',OutputName);
disp(str)
%显示测试图片
imshow(im)
title('Test Image');
figure,imshow(SelectedImage);
s1 = '.jpg';
s2= [];
OutputName=strrep(OutputName,s1,s2);
title(['第 ',OutputName,' 个人']);