GUI界面建立

成果:

在这里只介绍其中几个按钮的作用,不一一赘述,有问题可以私信,之后也会上传完整代码

(1)新建

(2)设计页面

先设计页面,再编写回调函数!

一般需要更改大小、文字,最重要的是要编辑tag值,以便找到回调函数

鼠标右键点击按钮,选择查看回调函数callback

在回调函数中编辑,点击后的反应

a、打开图片按钮

function open_Callback(hObject, eventdata, handles)
% hObject    handle to open (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% axis off  %%关闭坐标轴显示
global IMG0;
global IMG1;
global IMG2;
global IMG3;
global IMG4;
IMG0=0;
IMG1=0;
IMG2=0;
IMG3=0;
IMG4=0;
[filename pathname] =uigetfile({'*.*';'*.png';'*.JPEG';'.jpg';'*.bmp'},'打开图片');
if isequal(filename,0)||isequal(pathname,0)msgbox('没有选中文件','出错');return;
else
file=[pathname filename];
%%打开图像
RGB=imread(file);
%%打开axes1的句柄 进行axes1的操作
axes(handles.axes1); axis tight;
%%在axes1中显示图像
imshow(RGB);
title('原始图像');
%% ****************************剪裁图像********************************
r=RGB(:,:,1);
% I=mat2gray(r);%实现图像矩阵的归一化,使矩阵的每个元素的值都在0和1之间
%I = rgb2gr11ay(RGB);%彩色图像转灰度图像
%% *******************图像分割(阈值法)*******************
%最大类间方差法自动计算灰度图像I阈值,再用im2bw得到二值图像
threshold = graythresh(r);
bw = im2bw(r,threshold);
% figure,imshow(bw)
%% ***************************形态学处理*********************
%删除二值图像bw中面积小于150的对象,默认情况下使用8邻域。
bw = bwareaopen(bw,30);
%闭合(先膨胀后腐蚀),填充物体内细小空洞,连接邻近物体,平滑边界
se = strel('disk',5);
bw = imclose(bw,se);
% 填充二值图像中的由边界包围的空洞区域。
bw = imfill(bw,'holes');
% figure,imshow(bw)
%% *******************************以上是图像二值化,下面找邻接矩阵*******************************
% 返回一个和bw大小相同的L矩阵,包含了标记了bw中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数),默认为8连通寻找
[L,n] = bwlabel(bw);
x=zeros(1,n);for i=1:nx(i)=sum(sum(L==i));end
[m,ind]=max(x);
[y,x]=find(L==ind);
x0=min(x(:));%找连通域列中最小值
x1=max(x(:));
y0=min(y(:));
y1=max(y(:));
hold on
% rectangle('Position',[x0,y0,x1-x0,y1-y0],'edgeColor','g','LineWidth',1)%标出邻接矩阵
I = imcrop(RGB,[x0,y0,x1-x0,y1-y0]);
% figure,imshow(I3);
axes(handles.axes2);
imshow(I);
global name;
name='剪裁后的图像';
title(name);
global S;
S=I;%设置全局变量,保存初始图像路径,以便还原
global K;
K=1;
global N;
N={};
N{K}=name;
global B;
B={};
B{K}=I;
IMG0=I;
end

b、选择参数按钮

对于这个选择参数跳出方框的设计:

设计页面中双击按钮,可在检查器中设计显示中文"选择参数"

% --- Executes on button press in shanchu.
function shanchu_Callback(hObject, eventdata, handles)
% hObject    handle to shanchu (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global B;
global name
global N;
global K;
global IMG3;
global IMG4;
global IMG0;
if IMG0==0msgbox('无图片');
elseif IMG3==0msgbox('请执行上一步');
else
I=IMG3;
axes(handles.axes2);
prompt={'删除面积小于多少的对象?'};
defans={'100'};%设置默认值
p=inputdlg(prompt,'input',1,defans);
p1=str2num(p{1});
I1=bwareaopen(I,p1);
guidata(hObject,handles);
imshow(I1);
name='手动阈值法';
title(name);
K=K+1;
B{K}=getimage(handles.axes2);
N{K}=name;
IMG4=B{K};
end

c、多项选择按钮


里面填上选项

在回调函数(huidu_Callback)里对var参数进行判断

% --- Executes on selection change in huidu.
function huidu_Callback(hObject, eventdata, handles)
% hObject    handle to huidu (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: contents = cellstr(get(hObject,'String')) returns huidu contents as cell array
%        contents{get(hObject,'Value')} returns selected item from huidu
global B;
global name;
global N;
global K;
global IMG0;
global IMG1;
if IMG0==0msgbox('无图片');IMG1=0;
else
I=IMG0;
var=get(handles.huidu,'value');
axes(handles.axes2);
I=mat2gray(I);
switch varcase 1I1=I(:,:,1);%图像增强imshow(I1);name='取R分量后的图像';title(name);case 2I1=I(:,:,2);%图像增强imshow(I1);name='取G分量后的图像';title(name);case 3I1=I(:,:,3);%图像增强imshow(I1);name='取B分量后的图像';title(name);case 4I1=rgb2gray(I);%图像增强imshow(I1);name='取B分量后的图像';title(name);
end
K=K+1;
B{K}=getimage(handles.axes2);
N{K}=name;
IMG1=B{K};
end

d、检测按钮

单击检测按钮会在后面的方框中出现检测结果:

利用set(handles.edit1,‘string’,a);函数设置,后面的方框名字是handles.edit1

% --- Executes on button press in jiance.
function jiance_Callback(hObject, eventdata, handles)
% hObject    handle to jiance (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global IMG0
if IMG0==0msgbox('无图片');
else
I = IMG0;
R=I(:,:,1);
I1=mat2gray(R);%实现图像矩阵的归一化,使矩阵的每个元素的值都在0和1之间
%% 图像增强—线性灰度变换
I1=imadjust(I1,stretchlim(I1),[]);%图像增强
%% 手动阈值法图像分割
k1=find(I1>180/255);     %找到灰度值大于180的索引(指针)
I2=zeros(size(I1));
I2(k1)=255/255;  %索引大于180的像素的灰度值置255
%% 删除面积小于100的对象
bw = bwareaopen(I2,100);
%% 边缘检测—canny算子
ed=edge(bw,'canny');
sum1=0;
[M,N]=size(ed);
for i=1:Mfor j=1:Nif ed(i,j)==1sum1=sum1+1;endend
end
n=sum1/(M*N);
%% ************计算最大连通域面积*********
[M,N]=size(bw);
[L,n] = bwlabel(bw);
x=zeros(1,n);for k=1:nx(k)=sum(sum(L==k));end
[m,ind]=max(x);
con=0;
S=zeros(M,N);
for k=1:Mfor j=1:Nif L(k,j)==indcon=con+1;S(k,j)=1;endend
end
CON=con/(M*N);
%% **********************************特征选择*****************************
h=imhist(R); %用红色分量图最好,灰度图次之,二值图再次之,边缘图方差很近
h=h./sum(h);  %归一化
L=length(h); %计算灰度级
L=L-1;
h=h(:);      %转化为列向量
rad=0:L;%生成随机数
rad=rad./L;%归一化
m=rad*h;%均值
rad=rad-m;
stm=zeros(1,3);
stm(1)=m;
for j=2:3
stm(j)=(rad.^j)*h;%计算n阶矩
end
usm(1)=stm(1)*L;%一阶矩
usm(2)=stm(2)*L^2;%二阶矩
%usm(3)=stm(3)*L^3;%三阶矩
st(1)=usm(1); %均值
st(2)=usm(2).^0.5; %标准差
%st(3)=1-1/(1+usm(2)); %平滑度
st(3)=sum(h.^2); %一致性
%st(5)=-sum(h.*log2(h+eps)); %熵
%% **********模型*******
svmModel_mat = load('flow_svmModel');
svmModel= svmModel_mat.svmModel;
%计算超平面方程参数
[~, r] = size(svmModel.SupportVectors);
w = sum(svmModel.SupportVectors .* repmat(svmModel.Alpha, 1, r));
b = svmModel.Bias;
%将需要验证的样本预处理, (缩放平移)
scale = svmModel.ScaleData.scaleFactor;
shift = svmModel.ScaleData.shift;
%获取样本
sData=[st(2),CON];      %本预测集只有这一个点,输出classes=-0.5918小于零,是线下类(B类蘑菇)
[c, ~] = size(sData);%获取样本数量, sData是样本 每一行是一个样本
sDataScaled = (sData+ repmat(shift, c, 1)) .* repmat(scale, c, 1);
%计算样本的类别
classes = sDataScaled * w' + b;
%算出来的classes小于0的是正类, 大于0的是负类
if classes>0a='A';
elsea='B';
end
set(handles.edit1,'string',a);
end

(3)菜单栏设计

对于右上角的菜单栏设计

点击菜单编辑器进行编辑

将它连接到响应的回调函数或者另外写回调函数即可

(4)成果展示

matlab中GUI界面的一些设计与操作相关推荐

  1. MATLAB中GUI界面开发上位机

    MATLAB是一个十分强大的工具,用来制作串口上位机也是不错的选择.虽然一般的上位机是用的C#或者C++编写的,这两者具有强大的系统操作能力或便捷灵活的通信和控制开发能力.但是对于我这种偏硬小白,ma ...

  2. matlab中gui界面如何保存为图片,如何保存MATLAB GUI界面中的图片

    如何保存MATLAB GUI界面中的图片 代码来源自网络,作者未知,侵删. 原生支持png,bmp,jpg格式.另外自行添加了清晰度比较高的eps格式(荐). 新建一个按钮,按钮的代码如下. 其中第二 ...

  3. matlab的gui界面怎么用,MATLAB的GUI界面基础操作

    今天我们来学习如何用MATLAB的GUI界面进行一些简单的操作,因为GUI界面可以很简单的制作界面,按钮系列,直接拖拽即可,而不需要用代码对界面进行编写,只需要对里面的具体功能进行编码,我们今天就运用 ...

  4. matlab软件中GUI界面开发学习——双色球选择小工具

    matlab软件中GUI界面开发学习--双色球选择小工具 先上一张界面截图: 特别说明:只是最近对双色球比较感兴趣,所以找了一个实际的项目依据帮助我学习GUI工具,小工具的相关条件仅代表个人想法,选择 ...

  5. matlab中guide界面的设计

    matlab中guide界面的设计 可视化的界面设计可以使结果更加清晰的表示出来,可以实现简单的交互,本文将详细介绍关于guide界面的设计和部分应用 1. 进入guide界面设计 在命令行出窗口输入 ...

  6. matlab制作GUI界面(1)

    matlab制作GUI界面 概述 创建GUI界面 界面设置 静态文本 最后 概述 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的 ...

  7. 基于MATLAB软件GUI界面的自制简单电子琴

    基于MATLAB软件GUI界面的自制简单电子琴 概要: 本文基于MATLAB及其GUI界面设计了一个简单电子琴.利用MATLAB的GUI控件及相关算法,实现了一些简单的功能.这是作者大一暑期课程< ...

  8. 基于MATLAB软件GUI界面的可编程电音合成器软件

    基于MATLAB软件GUI界面的可编程电音合成器软件 1 总体设计 1.1 设计思路 1.2 软件运行 2 软件功能说明 2.1 软件界面 2.1.1 菜单栏 2.1.2 工具栏 2.1.3 MySy ...

  9. 手写数字识别问题(2)——利用matlab搭建GUI界面

    经过GUI的学习(详见博客:https://blog.csdn.net/didi_ya/article/details/105357279 ),小白逐渐了解了MATLAB的GUI界面及其搭建.下面是我 ...

  10. matlab怎么调用主函数,Matlab中一个函数调用另外一个函数的操作步骤

    原创Matlab中一个函数调用另外一个函数的操作步骤 编辑:小安 来源:PC下载网时间:2019-11-18 13:27:35 最近很多伙伴才刚刚安装入手Matlab这款软件,而本节就重点介绍了关于M ...

最新文章

  1. opencv imencode跟imdecode函数jpg(python)
  2. FarMap诞生了!
  3. 利用Python我发现我女朋友每天都在看这种网站
  4. API(应用程序接口)是什么
  5. asp.net web开发步骤_如何在Windows上做Python开发?微软出了官方教程
  6. Git:tag标签的使用
  7. python变量图片_在Python中向3D图添加第4个变量
  8. python app逆向_python之app逆向破解data参数中的PassWord DES加密无填充
  9. (转)Fintech路上券商究竟做错了什么?漏做了什么?
  10. Day002_LInux基础_常用命令
  11. 10.Qt元素QTreeWidgetItem
  12. 听音乐是运用计算机的技术,计算机音乐技术在电影音乐中的运用
  13. 嵌入式编程与软件编程思想不同浅见
  14. idea 重启之后 IntelliJ IDEA 一直在indexing
  15. HTML中的幽灵节点
  16. centos 虚拟机出问题 Oh no,something has gone wrong! 解决方法
  17. 高校学籍管理系统 _数据库系统概论课程设计
  18. linux一级目录全解
  19. 刷脸支付服务商促进数字化时代来临
  20. 骑士周游 探索访问

热门文章

  1. 电脑重启只剩下c盘怎么办_我的电脑正在正常运行突然自动重启了,重启后发现系统只剩下C盘了,请教怎么恢复?...
  2. 多媒体计算机主机系统,多媒体计算机系统的组成
  3. Springboot+netty实现Web聊天室
  4. protel99se进阶视频教程(手把手教你画51单片机开发板)
  5. wordpress入门主题_WordPress播客入门指南
  6. 关于SIM900A模块的学习心得
  7. loadrunner教程系列
  8. 【§美女杨颖win7电脑主题下载§系统美化】
  9. Python 爬虫--网站下载器
  10. 给Photoshop cc 2018添加简体中文语言包