一個MATLAB純m生成的Canny邊緣(二)一些基礎知識

數據類型

實際上,MATLAB讀入的數據是一種uint8類型的
在這裏插入圖片描述
這種類型主要用於存儲,但是不能用於一些計算,具體我在做ui的時候發現的但是什麼時候不能用我也沒搞清楚。其實我也沒特別搞的清楚。

ui的一些函數

1.uigetfile。

 [filename,path] = uigetfile({'*.';'*.jpg';'*.png';'*.jpeg';'*.bmp';;},'選擇圖片');

ui主要是讓你交互選擇圖片或者文件。
2.errordlg

warn = errordlg('你取消了選擇,請勾選文件','File Error');

比如我在try,catch中的添加的語句。如果你取消了勾選就會跳出警告對話框。

3.inputdlg

    msg = inputdlg(['請輸入\sigma的值']);         %對話框的提示
    true_msg = str2num(cell2mat(msg));

在輸入對話框中的數據類型是一種cell元胞類型,需要轉成mat再轉num。可以給之後的數據。

4.佈局,callback函數
這部分內容可以看我之前寫的blog,我就不再寫了。

try catch

try catch這種語句能夠讓你避免MATLAB自帶有的錯誤,try如果成功的話,程序運行下去,如果遇到錯誤,那麼就進入catch語句。在這裏插入圖片描述
如果不使用try、catch的話如果你取消勾選的話你會遇到上面的報錯。

 function [] = m1_callback(source,evendata)
             handles = guidata(source);
            [filename,path] = uigetfile({'*.';'*.jpg';'*.png';'*.jpeg';'*.bmp';;},'選擇圖片');
             try isa(filename,'numeric');                       
               truename = [ path,filename ];              %拼接真正的路徑名
             im = imread(truename);                        %顯示圖片
             subplot(2,3,1);                         
             imshow(im);
             chicun = size(im);
             switch numel(chicun)
                 case 2
                     im1 = im;
                 case 3
                     im1 = rgb2gray(im);
             end
             im1 = double(im1);                                 %讀入的是uint8類型,要轉double才能計算
             handles.im1 = im1;                                     
             guidata(source,handles);
             title('原始圖像','fontsize',20);   
             catch
             f = errordlg('你取消了選擇,請勾選文件','File Error');
             end
 end

像這裏如果用上try、catch的話就會彈出警告對話框。
ui、ui如果你脫離了MATLAB環境不報錯,但是隻是沒結果肯定不好,在MATLAB環境中,會遇到紅色的警告。所以用try、catch是一種規範吧。也是讓ui更加可讀。

plus,佈局、回饋函數的內容請去閱讀我以前的blog。

至於一些opencv的函數,像fspecial、edge等算子,我就默認不寫了,因爲比較簡單了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章