matlab交互式程序设计示例:[6]GUI界面编程1
1、我们要进行的程序是彩色图像处理试验示例,用这个程序来练习我们的gui前台设计。程序功能介绍:具有彩色图像处理及保存和音乐播放功能效果如下图
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/def3c219ce2c5b1b90360c6f2b39131fcfec0e7c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/cfadcdd96975f2c47a71a1f08f0148fe1f42067c.jpg)
2、在MATLAB的命令窗口中输入guide命令,打开guidequick start窗口,选择create new gui 点ok 生成新的fig文件如下图:
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/5c2a1ad149299a88a6fb105667eeadbcbf2f7f7c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/bf6e59704618dfda43d3c33589214f579256777c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/4e168d5653bbf820ca136eb8ba21056105a36e7c.jpg)
3、右点窗口 ,打开属性设置修改figur窗口名字,点name项就可以改 我们改为xiaobotest.fig,而后我们在窗口中拖进来,和几个按纽用于交互程序的事件触发,做成前台如下图
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/04201aa355e983ae5d3fa19968efe0781531697c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/e2aefe781431dfb68984afd512cf02532e63637c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/031231632385e0362079bf5bb8e039723c035a7c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/46a92de039723d037c02c635bb486143d6d4577c.jpg)
4、前台部分 接下来我们还要进行窗口菜单的制作,点tools选择menu editor
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/baab2086304861431c3cb0828febf6a75e0f537c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/f7e6410f822b74eecedab3abda2c8cf1d9a74a7c.jpg)
5、接上面的操作出现一个窗口 点new menu ,选中这个项 接着再点new menu就可以为它加目录项了 ,选中untiled1 可以看到它的属性 可以修改了label 是用于显示文字说明用的 tag相当于句柄一样用于操作的 下面我们改打开表项的 tag 值为open 如下图
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/4a594f2c8cf1d8a7f1dbb03746e34b2c57ee477c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/27725684cde34b2c8d0683cc0d0e7c75e4f4437c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/57af657f860e7c753a1c0446650d3aceabd7bf7c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/e4b5e2f5ee0d3ace493f8ad887e265e7350fbb7c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/ab966c6b0ce265e7d3e79ccb9f23beb9773eb77c.jpg)
6、经过上面的几步操作 就完成菜单制作,功能上就具有 打开文件 保存 音乐播放 停止等如下图
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/65390a23beb9763ecd2a43656ad06de89b61b07c.jpg)
7、下面进行各各菜单项的事件操作,点view就可以打开callback函数function openfile_Callback(hObject, eventdata, handles)这个就是打开操作对应的函数 我们加入如下代码
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/ba97ffd06de89a6177cdb92045e8b004551bad7c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/b1454a1bd10ff226f572c9bd9c99e92abbb8a47c.jpg)
8、后的各各操作如同上面一样 加入一下代码 分别为保存rgb操作图片和hsi操作图片function savergb_Callback(hObject, eventdata, handles)function savehsi_Callback(hObject, eventdata, handles)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/304f0999e92abab8bfa8924d4814f1c594eea17c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/f0848bee41c1b727a8bafe3b1a2ca5cadde8987c.jpg)
9、对于按纽操作,例如 rgb直方图操作 我们把放到rgb直方图上点右键如下图代码如下function pushbuttonrgb_Callback(hObject, eventdata, handles)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/906dbbcadce890480a158f44130e5f204271927c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/5e615d715fdb3620a8d3353aabc5260f89358d7c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/274e9635dd8a59de5dee70b2b370d5413b8c847c.jpg)
10、技术细节说明:其中实现菜单可选不可选用的是set(handles.savefile,'Enable'荑樊综鲶,'off');set(handles.savergb,'Enable','off');set(handles.savehsi,'Enable','off');set(handles.saveph,'Enable','off');set(handles.savejr,'Enable','off');其中savefile是保存菜单的tag值,比如我们操作了直方图就可以在显示后执行如下代码set(handles.savefile,'Enable','on');set(handles.savergb,'Enable','on');这样就可以实现菜单的冗余操作了全部操作后的效果如下图:
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/3931cb413a8ca608bbe66c4fdb8c9bcec6f8fe7c.jpg)
11、特别说明:在菜单选项中加入音乐播放功能打开制作好的音乐功能菜单的并修改callback函数function start_Callback(hObject, eve荏鱿胫协ntdata, handles)% hObject handle to start (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)[y,Fs,bits] = wavread('dl.wav'); %获取音乐数据ao = analogoutput('winsound'); %建立硬件对象addchannel(ao,[1 2]); %创建声音输出通道set(ao,'SampleRate',Fs) %设置采样率data1 =y(:,1); %双声道data2 =y(:,2);putdata(ao,[data1 data2]); %往声卡堆音乐数据 %输出音乐数据 setappdata(handles.figure1,'ao',ao);start(ao); % --------------------------------------------------------------------function pause_Callback(hObject, eventdata, handles)% hObject handle to pause (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)ao=getappdata(handles.figure1,'ao');stop(ao);运行的界面如下图:可以选择停止播放,或者在音乐放完后可以再点播放接着听音乐,放松工作时间啊
12、菜单项目的功能有打开,和保存两个打开是打开图片,保存是保存你处理的各种图像,没有打开图像前保存菜单是不可选的,这四种处理没有相应的处理时也是不可选的如下图
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/9a8fd9f88a775dddada51df9a427e7ef2906f97c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/6a408cdd3340b6f3bf6efbaf12c0affce086ee7c.jpg)
13、点RGB直方图均衡button可以看到显示到了相应位置上,此时保存菜单里的保存RGB直方图均衡图像可以选择
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/aebdff86242fa872a1f64657bfdaf05e4b23e97c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/bfa52adaf05e4a23439806ae1dd818196020e27c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/4b626771fe1d96d825f099932ccd0c6efaf2e17c.jpg)
14、程序完整的运行效果如下图,保存hsi直方图到桌面操作
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/979906196120a7cd4c87034189b375d7987bdc7c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/a68c126efbf202b3363e61c830f4da5873dadb7c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/03f26bd7997bbbf49cb18a695549610f8a56d67c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/bab5c45872dade4928e673e526042e6816e9d57c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/739bc049610f8b56e6edd6db9ce951e10ff8d37c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/ac45306817e951e14111a0e55e3da824d9e9cf7c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/5917cb3da824d8e9983b43d5da598540112ac87c.jpg)
![matlab交互式程序设计示例:[6]GUI界面编程1](https://exp-picture.cdn.bcebos.com/84010e2a04e23ea261ab58c92b10bc33ed38c37c.jpg)