首頁 > 其他

matlab互動式程式設計範例:[6]GUI介面程式設計1

2019-12-25 20:07:05

    MATLAB是美國MathWorks公司出品的商業數學軟體,用於演算法開發、資料視覺化、資料分析以及  數值計算的高階技術計算語言和互動式環境,主要包括MATLAB和Simulink兩大部分。

    圖形化使用者介面(GUI)是使用者與計算機程式之間的互動方式,是使用者與計算機進行資訊交流的方式。

1

我們要進行的程式是彩色影象處理試驗範例,用這個程式來練習我們的gui前台設計。

程式功能介紹:具有彩色影象處理及儲存和音樂播放功能效果如下圖



2

在MATLAB的命令視窗中輸入guide命令,開啟guidequick start視窗,選擇create new gui   點ok 生成新的fig檔案如下圖:




3

右點視窗 ,開啟屬性設定修改figur視窗名字,點name項就可以改 我們改為xiaobotest.fig,而後我們在視窗中拖進來,和幾個按紐用於互動程式的事件觸發,做成前台如下圖




4

前台部分 接下來我們還要進行視窗選單的製作,點tools選擇menu editor 



5

接上面的操作出現一個視窗 點new menu ,選中這個項 接著再點new menu就可以為它加目錄項了 ,選中untiled1 可以看到它的屬性 可以修改了label 是用於顯示文字說明用的 tag相當於控制代碼一樣用於操作的 下面我們改開啟表項的 tag 值為open 如下圖 




6

經過上面的幾步操作 就完成選單製作,功能上就具有 開啟檔案 儲存  音樂播放 停止等如下圖


7

下面進行各各選單項的事件操作,點view就可以開啟callback函數

function openfile_Callback(hObject, eventdata, handles)這個就是開啟操作對應的函數  我們加入如下程式碼 



8

後的各各操作如同上面一樣 加入一下程式碼 分別為儲存rgb操作圖片和hsi操作圖片

function savergb_Callback(hObject, eventdata, handles)

function savehsi_Callback(hObject, eventdata, handles)



9

對於按紐操作,例如 rgb直方圖操作 我們把放到rgb直方圖上點右鍵如下圖程式碼如下

function pushbuttonrgb_Callback(hObject, eventdata, handles)




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');

這樣就可以實現選單的冗餘操作了

全部操作後的效果如下圖:


11

特別說明:在選單選項中加入音樂播放功能開啟製作好的音樂功能選單的並修改callback函數function start_Callback(hObject, eventdata, 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);執行的介面如下圖:可以選擇停止播放,或者在音樂放完後可以再點播放接著聽音樂,放鬆工作時間啊
? ? ? ? ? %設定取樣率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

選單專案的功能有開啟,和儲存兩個開啟是開啟圖片,儲存是儲存你處理的各種影象,沒有開啟影象前儲存選單是不可選的,這四種處理沒有相應的處理時也是不可選的如下圖



13

點RGB直方圖均衡button可以看到顯示到了相應位置上,此時儲存選單裡的儲存RGB直方圖均衡影象可以選擇




14

程式完整的執行效果如下圖,儲存hsi直方圖到桌面操作





IT145.com E-mail:sddin#qq.com