MATLAB GUI图像处理->打开和保存图片

笔者(没错,就是我)最近刚刚接触使用MATLAB的GUI做一些简单的图像处理,觉得挺有趣的,自己心血来潮想写写看,同时也是对学到的知识的回顾和总结。如有不妥之处,还请多多指教!

关于如何制作一个GUI界面在这里就不详细介绍了,因为在网上输入“GUi界面”都能搜出一大堆教程。

当你编辑好界面后,在对应的.m文件里你会看到一堆函数,一开始做学习做简单界面的功能的时候,并不需要理会这些函数究竟写了什么,只需要明白你实现的控件对应的回调函数,也就是Callback函数,实现的功能代码写进函数里就行。而CreateFcn是在生成这个控件显示之前,执行这个函数名下的代码;DeleteFcn则是在控件要销毁,但是在被销毁之前执行这个函数名下的代码。关于两个控件间,两个GUI界面间如何传值的问题,在之后的博文中会一一细说。

由于我做的是图像的处理,那么打开图像和保存图像就是必不可少。

先在菜单编辑器里添加“打开”和保存这两个菜单。为了能让打开的图片显示出来,我在界面正中间(当然是为了显示好点)添加了“坐标轴”控件。但是这样还不行,因为是坐标轴,每次运行时界面都会有坐标的标注,而我需要的是一个能显示图片的区域,因此需要在Openingfcn里添加这样一句代码:set(handles.axes1,'visible','off'); 让坐标轴的标注和刻度去掉(其实是隐藏掉)。

”打开图像“的回调函数里的代码如下:

axes(handles.axes1);
[filename,pathname]=uigetfile({'*.bmp;*.jpg;*.png;*.jpeg;*.tif'},'Pick an image',
				'C:\Users\Public\Pictures\Sample Pictures');
str=[pathname filename];
if isequal(filename,0)||isequal(pathname,0)
    warndlg('Please select a picture first!','Warning');
    return;
else
    im = imread(str);     (1)
    imshow(im);		  (2)
end;

调用了MATLAB里的函数uigetfile,打开图片的路径得自己选择,可以修改'C:\Users\Public\Pictures\Sample Pictures'来改变每次打开图片的默认路径,imread和imshow分别是读取图片和显示图片。这里用的图片都是24位的真彩图,如果你想显示8位图,可以修改上面的代码行(1)(2)
[im,map] = imread(str);
imshow(im,map);
保存图片可以调用imwrite函数,具体代码如下

[FileName,PathName] = uiputfile({'*.jpg','JPEG(*.jpg)';...
                                 '*.bmp','Bitmap(*.bmp)';...
                                 '*.gif','GIF(*.gif)';...
                                 '*.*',  'All Files (*.*)'},...
                                 'Save Picture','Untitled');
if FileName==0
    return;
else
    h=getframe(handles.axes1);
    imwrite(h.cdata,[PathName,FileName]);
end;


至于程序的退出比较简单,在”退出“的Callback函数里添加 close; 就行了。
这样就完成了最简单的设计。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值