【人脸定位】基于matlab肤色人脸检测GUI界面【源码98期】

一、简介

基于matlab肤色人脸检测GUI界面,人脸定位是计算机视觉领域的一个重要研究方向,其主要目的是从图像或视频中准确地检测出人脸的位置,并定位面部的关键特征点。MATLAB作为一款强大的数值计算与数据分析软件,为人脸定位提供了丰富的算法工具和实现平台。本文将介绍MATLAB在人脸定位中的应用,包括基本原理、常用算法及实现方法。

二、部分源码

function varargout = GUI(varargin)
% 全局变量声明
global img_copy
global th
th=0.5;

% 下面这部分代码是系统默认生成的
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
    'gui_Singleton',  gui_Singleton, ...
    'gui_OpeningFcn', @GUI_OpeningFcn, ...
    'gui_OutputFcn',  @GUI_OutputFcn, ...
    'gui_LayoutFcn',  [] , ...
    'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
%至此完成初始化,接下来建立坐标系
function InitAxes(handles)
% 全局变量声明
global img_copy
global th
% 清理
clc;
% 设置默认坐标系
axes(handles.axes1); cla reset;
set(handles.axes1, 'XTick', [], 'YTick', [], ...
    'XTickLabel', '', 'YTickLabel', '', 'Color', [0.7020 0.7804 1.0000], 'Box', 'On');
% 设置按钮初始化状态
set(handles.FaceDet,'Enable','off');
% 设置默认窗体名称
set(handles.figure1,'Name','基于肤色模型人脸检测Demo');
% 设置默认进度条
set(handles.slider_th,'value',0.5);
% 设置默认文本框
s=sprintf('阀值:%.1f',0.5);
set(handles.text1, 'String', s);
%开始设计操作界面了!
%第一步:
function GUI_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% 初始化窗体
InitAxes(handles);
guidata(hObject, handles);
%第二步:
function varargout = GUI_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
%第三步:
function OpenFile_Callback(hObject, eventdata, handles)
% 全局变量声明
global img_copy
global th
% 打开文件选择对话框
[filename, pathname] = uigetfile( ...
    {'*.jpg;*.tif;*.png;*.gif','All Image Files';...
    '*.*','All Files' },...
    '请选择要测试的图片', ...
    'on');
% 如果取消选择,则不进行操作
if isempty(filename) || isempty(filename)
    return;
end
% 显示选择的文件
fprintf('file=%s%s\r\n',pathname,filename);
% 生成文件路径
filename = fullfile(pathname, filename);
% 读取
img = imread(filename);
% 赋值
img_copy=img;
% 显示
axes(handles.axes1); imshow(img_copy, []);
% 设置按钮状态
set(handles.FaceDet,'Enable','on');
% 第四步:
function btnExit_Callback(hObject, eventdata, handles)
% 关闭窗体
close;
% 第五步:
function FaceDet_Callback(hObject, eventdata, handles)
% 全局变量声明
global img_copy
global th
% 显示
axes(handles.axes1); imshow(img_copy, []); hold on;
% 设置按钮状态
set(handles.FaceDet,'Enable','on');
% 获取当前的进度条数值
th=get(handles.slider_th,'value');
% 显示
fprintf('th=%f\r\n',th);
% 调用检测函数
[boxs,num,duration] =face_detect(img_copy,th,30);
% 显示结果
for i=1:num
    % 框选并显示
    rectangle('Position',[boxs(i,1) boxs(i,2) boxs(i,3)-boxs(i,1)  boxs(i,4)-boxs(i,2)],'EdgeColor','g');
end
hold off;%至此人脸检测功能已实现
% 接下来是一些收尾工作哦
function slider_th_Callback(hObject, eventdata, handles)
% 全局变量声明
global img_copy
global th
% 获取当前的进度条数值
th=get(handles.slider_th,'value');
% 设置到文本框显示
s=sprintf('阀值:%.2f',th);
set(handles.text1, 'String', s);

function slider_th_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end

三、运行结果

 四、matlab版本

MATLAB R2019a

五、学习与交流

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

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值