📄 facerecognize.m
字号:
function [OriginI,index]=FaceRecognize(inputface,databasepath,database);
%人脸识别;inputface为待识别人脸文件的路径,database为人脸库;
%OriginI:识别出来的人在数据库中的人脸;index:识别出来的人在数据库中的序号;
load('D:\wavelet.dat','-mat');%载入W;
load('d:\database1.dat','-mat');%载入WI;
info = imfinfo(inputface,'bmp');
%读图;得到I;
I = rgb2gray(imread(inputface,'bmp'));
%计算人脸特征WI_In;
step=10;
for num=1:12
for v=1:5
for u=1:8
%得到对应某个k的Wk;
% for x1=1:info.Width
% for x2=1:info.Height
% Wk(x1,x2)=W(v,u,x1,x2);
% end
% end
%计算变换结果WIk;
% WIk=CalculateWIk(I,Wk,info.Width,info.Height,step);
for x1=1:info.Width/step
for x2=1:info.Height/step
WI_In(num,v,u,x1,x2)=WI(num,v,u,x1,x2);
end
end
end
end
end
load('d:\database.dat','-mat');%载入WI;
%与数据库中的人脸比对,找出最相像的人;
index=0;
Emin=realmax;
step=10;
for num=1:12
%从数据库中取出一个WI_In1;
index=0;
Emin=realmax;
for x1=1:info.Width/step
for x2=1:info.Height/step
for v=1:5
for u=1:8
WI_In1(v,u,x1,x2)=WI_In(num,v,u,x1,x2);
end
end
end
end
for num1=1:12
%从数据库中取出一个WI_Database;
for x1=1:info.Width/step
for x2=1:info.Height/step
for v=1:5
for u=1:8
WI_Database(v,u,x1,x2)=WI(num1,v,u,x1,x2);
end
end
end
end
%比对,计算E;
Enum=E(WI_In1,WI_Database,info.Width/step,info.Width/step);
%保存最小的E及对应的inde;
if Enum<Emin
Emin=Enum;
index=num1;
end
end
end
OriginI = rgb2gray(imread(strcat(databasepath,sprintf('%04d',index)),'bmp'));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -