MATLAB中保存图片的方法
Matlab---绘图中坐标系显示设置

Matlab---绘图中坐标系显⽰设置Matlab绘图---坐标系显⽰设置【@wp20180507-20180511(week 5)】⽬录:⼀、设置坐标范围⼆、修改坐标轴显⽰的刻度、密度、lable⽂字、位置等三、Matlab绘制出来的图像进⾏保存正⽂:⼀、设置坐标范围1) 函数axis():axis进⾏设置(对当前坐标轴进⾏设置)如果是⼆维:axis([xmin xmax ymin ymax]) 设置x-y坐标指定的区间范围。
xmin是x最⼩xmax是x最⼤,ymin,ymax分别是y最⼩,y最⼤⽐如,要改编x坐标axis([1 120000 -inf inf])如果改y坐标axis([ -inf inf 1 120000])当然,可以两个都改 -inf inf是正负⽆穷⼤如果是三维:axis([xmin xmax ymin ymax zmin zmax]) 设置x-y-z坐标指定的区间范围。
还要考虑到z坐标。
⽰例如下:>> x = 1:10;>> subplot(2,1,1) % 默认范围>> plot(x,x.^2)>> subplot(2,1,2) % 设置x范围[0,12],y任意>> plot(x,x.^2,'r')>> axis([0 12,-inf,inf])具体⽤法如下:plot(x, y); // 画图后⽤axis函数设置坐标轴的范围axis([xmin xmax ymin ymax]); % 设置坐标轴在指定的区间xmin、xmax 表⽰设置横坐标的最⼩最⼤值;ymin、ymax 表⽰设置纵坐标的最⼩最⼤值。
2) 函数set ():set函数进⾏设置(对指定的坐标轴进⾏设置)具体⽤法如下:plot(x, y); // 画图后⽤set函数设置坐标轴的属性set(handles,'xtick',0:100:2500) % handles可以指定具体坐标轴的句柄功能:设置X轴坐标范围0到2500,显⽰间隔是100;set(handles,'ytick',0:100:2500) % handles可以指定具体坐标轴的句柄功能:设置X轴坐标范围0到2500,显⽰间隔是100;3) 函数xlim( )/ ylim ( )使⽤⽅法: xlim([XMIN XMAX]) % sets the x limitsx轴上下限设定xlim([a,b]);y轴上下限设定ylim([a,b])% set(gca,'xlim',[-20 20],'ylim',[-20 20]); 表⽰:设置当前图的横轴和纵轴的范围,lim就是limite的意思。
Matlab关于如何读取文件夹中的所有图片(3种方法)

Matlab关于如何读取⽂件夹中的所有图⽚(3种⽅法) Matlab读取图⽚的⽅法有很多种,我给出的⽅法思想和他们的差不多⼀样,但是代码的风格可能有点区别,可以学习。
⽅法1:⾸先定义⽂件夹的名称:[cpp]1. imgDir='.\coimg\';2. imgDir2='.\\coimg\\%s'; ⽤于读取图⽚具体代码:[cpp]1. oldPwd = pwd;2. cd(imgDir);3. x = dir;4. listOfImages = [];5. for i = 1:length(x),6. if x(i).isdir == 0,7. listOfImages = [listOfImages; x(i)];8. end;9. end;10. cd(oldPwd);11.12. fid=imgDir2;13. for j = 1:length(listOfImages)14. fileName = listOfImages(j).name;15. rfid=sprintf(fid,fileName);16. Irgb=imread(rfid);17. Iset{j}=Irgb;18. end⽂中 x(i).isdir==0 其实意思是跳过i=1,2时,那是isdir==1,其实是为了跳过'.','..',这个应该是操作系统的知识吧。
最后将读取的图⽚放在Iset⾥⾯。
代码很简单。
⾃⼰⼿写,测试成功两幅图⽚在Iset⾥⾯啦。
⼩技巧值得注意。
⽅法2:适合⽂件夹⾥⾯的图⽚批量处理,⾮常好的算法,应该值得学习。
[cpp]1. function database = build_database(rt_data_dir,suffix)2. % This function is to build a database for the image sets3. % Input: rt_data_dir -- direction of image sets4. % suffix -- image format like 'jpg'5. % Output: database -- database that contains all the information of6. % images7.8. % Written by Wei Q9. % July. 16, 201310.11. fprintf('dir the database...');12. subfolders = dir(rt_data_dir);13.14. database = [];15.16. database.imnum = 0; % total image number of the database17. ame = {}; % name of each class18. bel = []; % label of each class19. database.path = {}; % contain the pathes for each image of each class20. database.nclass = 0;21.22. for ii = 1:length(subfolders),23. subname = subfolders(ii).name;24.25. if ~strcmp(subname, '.') & ~strcmp(subname, '..'),26. database.nclass = database.nclass + 1;27.28. ame{database.nclass} = subname;29.30. frames = dir(fullfile(rt_data_dir, subname, suffix));31. c_num = length(frames);32.33. database.imnum = database.imnum + c_num;34. bel = [bel; ones(c_num, 1)*database.nclass];35.36. for jj = 1:c_num,37. c_path = fullfile(rt_data_dir, subname, frames(jj).name);38. database.path = [database.path, c_path];39. end;40. end;41. end;42. disp('done!');应该试着⾃⼰写写。
matlab image函数用法

matlab image函数用法MATLAB Image函数用法Image函数是Matlab的一个基本的图像处理函数,可以用来读取、显示和储存各种格式的图像,并且可以进行基本的图像矩阵变换,是Matlab中常用的图像处理方法。
以下将详细介绍如何使用Image函数:第一步:载入图片如果要对某个图片进行处理,首先需要将其载入Matlab环境中,可以使用Image函数来实现。
可以通过下面的代码来完成:A = imread('path_to_image');其中path_to_image指定了图片的位置,读取后会自动填充到变量A 中,这样就可以用A来进行后续的处理。
第二步:显示载入的图片载入完图片以后,我们可以使用下面的命令来显示该图片:imshow(A);这步骤完成后,就可以在Matlab环境中看到载入的图片。
第三步:图像矩阵变换如果要对载入的图片进行像素矩阵的变换,比如反转、镜像等等,可以使用以下代码来实现:B = imrotate(A, 90); //旋转90度C = flipud(A); //上下翻转D = fliplr(A); //左右翻转这些操作会对载入的图片进行像素矩阵变换,变换后的图像就会储存到相应变量中,例如旋转后的图像就会储存在B中,上下翻转后的图像就会储存在C中,左右翻转后的图像就会储存在D中,之后可以使用imshow函数来查看这些变换后的图片。
第四步:存储变换后的图片如果想对变换后的图片进行存储,可以使用Image函数中提供的imwrite函数来实现,可以使用如下代码:imwrite(B,'rotated.jpg'); //保存旋转后的图片imwrite(C,'Vertical_flip.jpg'); //保存上下翻转后的图片imwrite(D,'Horizontal_flip.jpg'); //保存左右翻转后的图片其中,括号内的参数指定图片的存储路径和名称,执行完上述代码,就可以在指定位置看到三张变换后的图片。
使用MATLAB绘图时,如何保存高清矢量图

使用MATLAB绘图时,如何保存高清矢量图
使用MA TLAB绘图时,若直接在图窗中保存或截图保存,在Word文档中插入保存的文件时会很模糊。
为解决这个问题,常将MA TLAB绘制的图以矢量图格式进行保存,下面进行介绍。
首先使用plot()函数绘制曲线图,示例代码如下:
x=0:0.1:2*pi;
y=sin(x);
plot(x,y);
在弹出图窗后有以下两种方法保存为高清矢量图。
1.保存为矢量图文件
使用print('D:\sin.emf','-dmeta')语句,其中'D:\sin.emf'是文件保存的路径,可以按实际情况进行修改,.emf为矢量文件扩展名。
保存之后,若需要在文档中插入此图,可直接从文件插入,找到保存的路径进行插入即可。
2.复制到剪贴板
使用print('-clipboard','-dmeta')语句,此时图片已复制到了剪贴板中,在Word 文档中使用粘贴即可直接插入图片,如下图
下图是粘贴得到的图,可以发现图片放大后没有失真,说明这是矢量图。
Matlab中保存图像时,图形窗口大小的控制

Matlab中保存图像时,图形窗口大小的控制zz首先要了解的是Matlab是面向对象的。
最高等级的对象是screen,它定义了figure可以用的最大szie。
screen下面是figure。
figue就是你画图的时候跳出来的那个新的对话窗口。
如果figure变化,screen是不会跟着变化的。
但screen变化的话,figure就要跟着变化了。
figure下面是axes。
axes是那个窗口里面你要画的东西。
axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
set(gca,'position',[])因此,set (gca,'position',[0.1,0.1,0.9,0.9] );的作用是:设置坐标轴距离画板(图形窗口figure)边距。
[0.1,0.1,0.9,0.9] 分别为axes在figure中的左边界,下边界,宽度,高度,最小为0,最大为1(左边界,下边界为0,上边界,右边界为1)见下面的例子:-----------------------------------------------------------------------------figureset (gca,'position',[0.1,0.1,0.9,0.9] );x=1:0.1:10;y=sin(x);plot(x,y)-----------------------------------------------------------------------------结果见下图:set(gcf,'position',[])一般matlab绘出来图的框架(图形窗口)大都是正方形或者近似正方形的矩形,能不能画一些扁的矩形呢?使用图形的position属性可以做到。
如set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32]);的意思是:对gcf的position进行设置。
matlab生成多张figure以及自动保存

MATLAB生成多张figure以及自动保存最近开始做毕业论文了。
在整理以前做过的诸多论文实验的时候,发现以前用MATLAB写出来的代码是在太混乱了。
算法程序,数据生成,以及图片绘画的.m文件都放在一个目录下。
不要说拿给别人看,就连我自己时间久了都搞不清楚哪种图片是哪个MATLAB程序生成的。
MATLAB没有Visual C++, Java那正规软件开发环境的工程概念,所以人工管理比较麻烦。
一般外人拿到一个论文的实验程序,最简单的,就是拿到一个入口程序,能够自动跑所有的实验程序,并且生成所有的实验图片。
这样,他就至少可以从这个入口程序一步一步跟踪进去,搞明白这一堆.m是什么东西。
那么有个关键问题,如何在一个程序里面生成多个figure呢?查了一下网上,有通过subplot方法实现的。
不过这个方法似乎不太好,因为它其实是将多个figure嵌到一个figure 里面,那么最终还是得一个个分开才能贴到论文里面。
下面是我论文里面的一个例子:function figure_wages()h=figure(1);figure_SLICE();saveas(h,'figure_wages_SLICE.fig');h=figure(2);figure_CARE();saveas(h,'figure_wages_CARE.fig');end这里我用过两个算法在同一块数据上进行训练,最后结果就生成下图两个figure了。
并且调用saveas函数可以实现自动把这两个figure保存到磁盘的.fig文件。
这里的h=figure(1)目的就是制定当前的默认显示的Figure的ID号,并且返回给句柄h。
PS:这里使用的数据都是真实的个人收入数据,其中另外2个维度分别是学历和工作经历。
大家看得出来,这些是在一个平面上的吗?分享到:4楼dragonworrior 2011-04-07 10:05发表[回复]3楼andysun001 2010-03-10 13:56发表[回复]2楼baltam 2009-11-12 21:58发表[回复]其实,如果你是想产生图片,并插入到论文中。
利用matlab GUI编程实现对不同格式的图片的打开和保存

利用matlab GUI编程实现对不同格式的图片的打开和保存建立的GUI如下:在打开按钮的回调函数里,利用uigetfile()函数建立一个打开文件的对话框,利用imread()函数来打开图片,imshow()函数显示图像,具体代码如下:[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.gif'},'选择图片');if isequal(filename,0)disp('Users Selected Canceled');elsestr=[pathname filename];im = imread(str);axes(handles.axes1);%axes1是坐标轴的标示imshow(im);end;运行之后的截图如下:在保存按钮的回调函数中,利用了uiputfile()函数建立了一个保存文件的对话框,调用matlab 的imwrite()函数保存经过修改的图像,具体代码如下:[filename,pathname]=uiputfile({'*.bmp';},'保存图片','Undefined.bmp');if ~isequal(filename,0)str = [pathname filename];px=getframe(handles.axes1);%saveas(gcf,str,'bmp');�ta = getappdata(gcf,'Timg');imwrite(px.cdata,str,'bmp');close(gcf);elsedisp('保存失败');end;其中的函数getframe()是为了获取坐标轴中的一帧图像,其返回的对象中有cdata和colormap 两个成员。
Matlab保存透明图片程序

将以下代码复制到m文件并保存为“im2tm”,即可运行。
function im2tm%%%%%%%%--------------------------------------------------------%%此函数将图片的背景处理成透明背景,并将处理后的图片保存为png格式的图片。
%%先将要转换的图片放到当前目录下,然后运行此函数,即可完成转换。
%%转换好的图片将以“原图片名”+“_透明”的命名保存在当前目录下。
%%LX,2012.08.15%%%%%%%%--------------------------------------------------------Im_name=input('请输入要转换的图片的名称全称,如“我的图片.jpg”:\n','s');I=imread(Im_name);%%%方式一:将图片中所有的背景区域转换为透明背景I=imresize(I,2);G=rgb2gray(I);ima=imadjust(G);level=graythresh(G);bw=im2bw(ima,0.95);figure,imshow(bw)bw2=~bw;% S=strel('line',8,50);% bw2=imclose(bw2,S);%bw2 =bwareaopen(bw2, 20);figure,imshow(bw2)R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);% R(bw2)=0;% G(bw2)=0;% B(bw2)=0;rgb=cat(3,R,G,B);siz=size(I);alpha=ones(siz(1),siz(2));alpha(~bw2)=0;%背景为白色%alpha(bw2)=0;%背景为黑色figure,imshow(rgb)Im_name(end-3:end)=[];imwrite(rgb,[Im_name,'_透明.png'],'Alpha',alpha)disp('转换成功!')。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab中图片保存的四种方法
关键字:
Saveas:>>saveas(gcf,['D:\保存的数据文件\方法1.png'])
>> saveas(gcf,['D:\保存的数据文件\方法2','.png'])
>> saveas(gcf,['D:\保存的数据文件\','方法3','.png'])
Print:>>print(gcf,'-djpeg','C:\abc.jpeg');
1、直接另存为
在figure中使用菜单file——>saveas——>选择保存形式(fig,eps,jpeg,gif,png,bmp等),这个的缺点是另存为的图像清晰度有很大的牺牲。
2、复制到剪贴板
在figure中使用菜单edit——>copy figure——>此时图像就复制到剪贴板了,我们可以借助其他软件(比如:绘图板)保存为需要的图片
3、saveas命令格式
用saveas命令保存图片。
Matlab提供直接的saveas函数可以将指定figure 中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】。
saveas的三个参数:
(1)图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3。
(2)文件名。
(3)单引号字符串,指定存储格式。
例:
% saveas(figure_handle,filename,fileformat)
plot(1:10);
>>saveas(gcf,['D:\保存的数据文件\方法1.png'])
>> saveas(gcf,['D:\保存的数据文件\方法2','.png'])
>> saveas(gcf,['D:\保存的数据文件\','方法3','.png'])
4、print函数
使用plot函数后紧接着用print函数。
print的三个参数:
(1)图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3。
(2)单引号字符串,指定存储格式。
用gcf可以获取当前窗口句柄。
png格式:'-dpng'
jpeg格式:'-djpeg',
tiff格式::'-dtiff'
bmp格式::'-dbitmap'
(3)文件名。
例:
>> x=-pi:2*pi/300:pi;
>> y=sin(x);
>> plot(x,y);
>> print(gcf,'-dpng','abc.png') % 保存为png格式的图片。
>> figure(2) % 新建一个句柄为2的图形窗口。
>> plot(x,cos(x)); % 在句柄为2的图形窗口上画图。
>> grid
>> print(2,'-djpeg','C:\abc.jpeg'); %将句柄为2的图形保存为jpeg/jpg格式的图片,文件名为'C:\abc.jpeg'。
另外有网友向我反映,有时我们只有一个Matlab图像的fig文件,但没有该图像的相关坐标数据,那我们如何获取fig图像的数据呢,这个其实比较好办。
1、将那个fig文件保存到Matlab的搜索路径下,双击打开它
2、在Matlab的command中输入如下内容
h=get(gcf,'chidren')
data=get(h,{'xdata','ydata','zdat a'})
%此时图形中所有图像的三维数据x,y,z将会以结构体的形式保存到data 变量中了。