數據類型
實際上,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等算子,我就默認不寫了,因爲比較簡單了。