数据类型
实际上,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等算子,我就默认不写了,因为比较简单了。