>_<:在 MATLAB 的命令窗口(Command Window)中運行 guide 命令,來打開 GUIDE 界面,如下:
>_<:然后,選擇空模板(Blang GUI),點擊 OK,即可打開 GUIDE 的設計界面,如下:
>_<:點擊工具欄上的菜單編輯器(Tools->Menu Editor),打開菜單編輯器,如下:
>_<:在 Menu Bar 中新建一個菜單項,名字為“文件”,其他設置請看下圖:
>_<:在“文件”菜單下添加菜單項:“打開”,“保存”,“退出”。見下圖:
PS:如果需要在菜單項“退出”上面添加一個分割線的話,選中“Separator above this item”就行了。
PS:保存我的界面為 pjimage.fig. 保存完畢之后,會自動打開 pjimage.m 文件,而我們所有的程
序都是要寫在這個 M 文件里面的。在編程中,我們的每一個鼠標動作都對應一個 Callback
函數。那么我們的菜單項也是如此的。
>_<:在界面上,單擊鼠標右鍵選擇“Property Inspector”,即可打開屬性窗口。當我們點擊不同的
控件時,其對應的屬性都會在這里顯示,我們可以進行修改。最主要的屬性莫過於 Tag 屬性
和 String 屬性。設置當前 Figure 窗口的 Tag 屬性為:figure_pjimage,窗口的標題(Name 屬性)為:圖像處理
實例。如下:
>_<:然后,點擊工具欄的保存按鈕。之后,點擊工具欄的運行按鈕 (Run Figure)。注意,工具欄
的圖標都會有提示的,像運行按鈕的提示就是 Run Figure. 我們會看到如下的界面:
PS:那說明,我們保存的.fig 文件的目錄不是當前目錄,但是沒關系啊,我們只要點擊“Change
Directory”來改變當前目錄。當然,如果你想把當前目錄添加到 MATLAB 路徑也可以,那
就點擊“Add to Path”就 OK 了。我在這里推薦點擊“Change Directory”,因為沒有什么太
大必要把其添加到 MATLAB 路徑中,一般是工具箱需要添加或者我們的函數或程序寫完了 ,
而在 MATLAB 的命令窗口找不到我們的函數的時候,我們可以將函數或程序所在的目錄添
加到 MATLAB 路徑。
>_<:我們的程序運行時的樣子,是這樣的:
>_<:我們可以通過上面的按鈕 “View”來查看該菜單項
的響應函數,也就是 Callback 函數。也可以在 pjimage.m 中看,比如保存的 Tag 屬性是
m_file_save,那么它對應的 Callback 函數的名字就是 m_file_save_Callback。依次類推了。
下面我們來寫打開菜單項的函數,要打開一個圖片,當然要用打開對話框了。在界面編程中 ,
打開對話框的函數是 uigetfile. 關於它的詳細的說明用 help uigetfile 命令查看。下面是打開
菜單的響應函數:
1 % -------------------------------------------------------------------- 2 function m_file_open_Callback(hObject, eventdata, handles) 3 % hObject handle to m_file_open (see GCBO) 4 % eventdata reserved - to be defined in a future version of MATLAB 5 % handles structure with handles and user data (see GUIDATA) 6 [filename,pathname]=uigetfile(... 7 {'*.bmp;*.jpg;*.jpeg','Image Files(*.bmp,*.jpg,*.png,*.jpeg)';... 8 '*.*','All Files(*.*)'},... 9 'Pick an Image');
>_<:保存.m 文件,並運行程序。點擊“文件”下的“打開”,會打開如下的打開對話框:
>_<:選擇一個文件之后,程序中的 filename 就是你選擇的文件的文件名,pathname 就是該文件
所 在 的 目 錄 的 路 徑 。 比 如 : filename =5.jpg , pathname =C:\Documents and
Settings\Administrator\My Documents\。
>_<:那么獲得路徑之后,我們要怎么樣才能讀入和顯示一個圖片呢?讀入圖片可以用 imread 函
數,而顯示可以在一個坐標軸上。那么我們需要在界面上畫上一個坐標軸,為了對比,我們
畫兩個坐標軸,一個顯示處理前,一個顯示處理后的。並且將處理前的坐標軸的 Tag 屬性改
為 axes_src,處理后的坐標軸的 Tag 屬性為 axes_dst。更改之后,保存。如下:
>_<:然后在 m_file_open_Callback 程序原來的基礎上,再添加如下的程序:
1 axes(handles.axes_src);%用axes命令設定當前操作的坐標軸是axes_src 2 fpath=[pathname filename];%將文件名和目錄名組合成一個完整的路徑 3 imshow(imread(fpath));%用imread讀入圖片,並用imshow在axes_src上顯示
>_<:運行程序,通過“打開”菜單項,打開一個圖片。效果如下: