【人脸门禁识别】基于matlab人脸门禁识别系统【源码127期】

一、简介

基于matlab人脸门禁识别系统,该系统为基于MATLAB的疫情防护门禁系统。建立一个GUI可视化界面。测试的时候,采集一张全身照人脸图片,和库内人脸进行对比,如果是库内人脸,则判定为允许进入。如果不是库内人脸,则说明是可疑人员,不可以放行。如果输入正确密码,允许放行。

二、部分源码

function pushbutton1_Callback(hObject, eventdata, handles)
global TrainDatabasePath;
TrainDatabasePath = uigetdir(strcat(matlabroot,'\work'), '选择训练人脸库' );
msgbox('训练库已选择!')

function pushbutton2_Callback(hObject, eventdata, handles)
global TestDatabasePath;
TestDatabasePath = uigetdir(strcat(matlabroot,'\work'), '选择测试人脸库');
msgbox('测试库已选择!')

function pushbutton3_Callback(hObject, eventdata, handles)
global TestDatabasePath;
global TrainDatabasePath;

%读取人脸库的路径
prompt = {'输入库内测试人脸数字代表'};
dlg_title = 'Input of PCA-Based Face Recognition System';
num_lines= 1;
def = {'1'};

TestImage  = inputdlg(prompt,dlg_title,num_lines,def);
temp = TestImage;
TestImage = strcat(TestDatabasePath,'\',char(TestImage),'.jpg');
im = imread(TestImage);

T = CreateDatabase(TrainDatabasePath);
[m, A, Eigenfaces,D] = EigenfaceCore(T);

%画出特征值得图像

global OutputName;
OutputName = Recognition(TestImage, m, A, Eigenfaces);

SelectedImage = strcat(TrainDatabasePath,'\',OutputName);
SelectedImage = imread(SelectedImage);

%输出测试图片
axes(handles.axes1);
imshow(im);
%输出匹配图片
axes(handles.axes2);
imshow(SelectedImage);
%结果显示名字
season = 'null';

function OutputName = Recognition(TestImage, m, A, Eigenfaces)
ProjectedImages = [];
Train_Number = size(Eigenfaces,2);
for i = 1 : Train_Number
    temp = Eigenfaces'*A(:,i); %e将每个样本投影到特征空间
    ProjectedImages = [ProjectedImages temp]; 
end

% 从测试人脸库计算提取特征
InputImage = imread(TestImage);
temp = InputImage(:,:,1);

[irow icol] = size(temp);
InImage = reshape(temp',irow*icol,1);
Difference = double(InImage)-m; 
ProjectedTestImage = Eigenfaces'*Difference; % 将待测样本投影到特征空间
% 按照欧式距离取最小的原则得出匹配的人脸

Euc_dist = [];
for i = 1 : Train_Number
    q = ProjectedImages(:,i);
    temp = ( norm( ProjectedTestImage - q ) )^2;
    Euc_dist = [Euc_dist temp];
end
%选取最小欧式距离的人脸
[Euc_dist_min , Recognized_index] = min(Euc_dist);
%获取该人脸的数字代号
OutputName = strcat(int2str(Recognized_index),'.jpg');

三、运行结果

四、matlab版本

MATLAB R2019a

五、学习与交流

文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信


 

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值