把之前作业的PCA人脸识别代码看了看,发现有个耶鲁大学的彩色开源数据,可是怎么都找不到。
自己网上扣了范冰冰的11张照片,做成耶鲁开源人脸数据集的格式。
写了几行代码,把文件夹中的某张挑出来做测试数据,剩下的是训练数据。放这里
%从数据集中挑选出测试数据。文件夹中选两张重命名然后放到同一个文件夹里。
%从数据集中挑选出测试数据。文件夹中选两张重命名然后放到同一个文件夹里。
TrainDatabasePath=uigetdir('E:/');
TrainFiles = dir(TrainDatabasePath)
% cd('E:\07-Matlab相关代码包\01-FaceRecognition\人脸识别数据\YaleFace\TestDatabase');
for i=1:15
Files = dir(strcat(TrainDatabasePath,'\',TrainFiles(i).name))
filename1 = strcat(TrainDatabasePath,'\',TrainFiles(i).name,'\',Files(4).name)
filename2 = strcat(TrainDatabasePath,'\',TrainFiles(i).name,'\',TrainFiles(i).name,Files(4).name)
movefile(filename1, filename2);
movefile(filename2, TrainDatabasePath);
filename3 = strcat(TrainDatabasePath,'\',TrainFiles(i).name,'\',Files(12).name)
filename4 = strcat(TrainDatabasePath,'\',TrainFiles(i).name,'\',TrainFiles(i).name,Files(12).name)
movefile(filename3, filename4);
movefile(filename4, TrainDatabasePath);
end
代码也完善了一丢丢。
%读取训练数据
selpathname=uigetdir('E:/');
dirname = dir(selpathname);
ndir=size(dirname,1);
trainData=cell(8,ndir-2);
for i=1:ndir -2
facedir=[selpathname,'\',dirname(i+2).name];
facefile=dir(facedir);
nfile=size(facefile,1);
for j=1:nfile -2
facename=[facedir,'/',facefile(j+2).name];
trainData(j,i)={imread(facename)};
end
end
话说范冰冰真的好看吼,表情管理也好好,很难找到有大表情的。废了我好久才裁剪好,感觉背景有些杂,也没管了。后面的识别效果也还可以,让我感慨呀PCA比我想象中靠谱了一点。
测试数据集
结果