注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

清谈不觉晓:完全原创、自娱自乐

 
 
 

日志

 
 

【转载】MATLAB如何保存图片?  

2017-08-26 15:36:37|  分类: 资料 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

MATLAB如何保存图片?

  • |
  • 浏览:12129
  • |
  • 更新:
  • |
  • 标签:matlab 

我们用MATLAB作图常常需要保存图片,下面介绍保存图片的几种不同方式,以下图为例:【转载】MATLAB如何保存图片? - liu-xiaoyao - 我的博客

  1. 1.方式一:我们通过FILE的下拉菜单保存,点击file-save as,出现下图

    【转载】MATLAB如何保存图片? - liu-xiaoyao - 我的博客

      

    然后点击红框,出现下面几种可选格式

    【转载】MATLAB如何保存图片? - liu-xiaoyao - 我的博客

     

    然后选择自己想要保存的格式,常用的有emf png等,然后输入文件名,保存便可。

    保存的示例图片如下:【转载】MATLAB如何保存图片? - liu-xiaoyao - 我的博客


  2. 2.qq截图,比较低级的方式,效果如下:

    【转载】MATLAB如何保存图片? - liu-xiaoyao - 我的博客

     

    仅仅适合于自己看,完全不适合于学术。

  3. 3.用命令保存,输入saveas(gcf,'example.jpg'),则会将图片保存到当前工作目录,图片格式为jpg

    ******************


    如何保存这些由Matlab绘制出来的图像呢?当然借助第三方截图软件,就算了!
    1、直接另存为
    在figure中使用菜单file——>saveas——>选择保存形式(fig,eps,jpeg,gif,png,bmp等),这个的缺点是另存为的图像清晰度有很大的牺牲
    2、复制到剪贴板
    在figure中使用菜单edit——>copy figure——>此时图像就复制到剪贴板了,我们可以借助其他软件(比如:绘图板)保存为需要的图片
    3、saveas命令格式
    Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】 
    % saveas(figure_handle,filename,fileformat)
    plot(1:10);
    saveas(gcf,‘myfig.jpg’)
    复制代码
    4、print函数
    print函数原本不是用来进行图像保存了,而是操作打印机的,但是这里我们可以借用下 
    % print(figure_handle,fileformat,filename)
    x=-pi:2*pi/300:pi;
    y=sin(x);
    plot(x,y);
    %Matlab根据文件扩展名,自动保存为相应格式图片,另外路径可以是绝对也可以是相对
    print(gcf,'-dpng','abc.png')   %保存为png格式的图片到当前路径
    复制代码
    另外有网友向我反映,有时我们只有一个Matlab图像的fig文件,但没有该图像的相关坐标数据,那我们如何获取fig图像的数据呢,这个其实比较好办
    1、将那个fig文件保存到Matlab的搜索路径下,双击打开它
    2、在Matlab的command中输入如下内容 
    h=get(gcf,'chidren')
    data=get(h,{'xdata','ydata','zdat a'})
    %此时图形中所有图像的三维数据x,y,z将会以结构体的形式保存到data变量中了

    *****************

    本帖最后由 shitao123 于 2014-6-13 14:25 编辑 

    最近看了一些用matlab对图形图片进行保存的帖子和资源,关于图像保存的方法给大家分享一下这些方法是大家所使用方法的一个总结.

    如今常用的方法有三种printf,imwrite,saveas下面分别介绍一下:
    imwrite
    mwrite将图像数据写成图像文件,一般用于图像处理,当我们使用imshow将一副图像使显示在坐标系上时,我们可以使用如下方式保存图像

       I=getimage(gcf); % 获取坐标系中的图像文件数据
       imwrite(I,'myphoto.jpg')%保存图像为文件
    同时可以使用下面的形式保存图片数据,把图片保存到指定文件夹,并对文件名进行编号
       f=getframe(gcf);
       imwrite(f.cdata,['C:\Users\shitao\Desktop\s4\',int2str(i),'.jpg']);
    这个函数在视频分帧时,我经常使用,相对saveas的保存速度,个人感觉效率比较高,下面举个例子
    1. clc;close all;clear all;
    2. Img=imread('1.jpg');
    3. if ndims(Img)==3
    4. I=rgb2gray(Img);
    5. else
    6. I=Img;
    7. end
    8. I=im2bw(I,graythresh(I));
    9. [m,n]=size(I);
    10. imshow(I);title('binary image');
    11. txt=get(gca,'Title');
    12. set(txt,'fontsize',16);
    13. L=bwlabel(I);
    14. stats=regionprops(L,'all');
    15. set(gcf,'color','w');
    16. set(gca,'units','pixels','Visible','off');
    17. q=get(gca,'position');
    18. q(1)=0;%设置左边距离值为零
    19. q(2)=0;%设置右边距离值为零
    20. set(gca,'position',q);
    21. for i=1:length(stats)
    22. hold on;
    23. rectangle('position',stats(i).BoundingBox,'edgecolor','y','linewidth',2);
    24. temp = stats(i).Centroid;
    25. plot(temp(1),temp(2),'r.');
    26. drawnow;
    27. end
    28. frame=getframe(gcf,[0,0,n,m]);
    29. im=frame2im(frame);
    30. imwrite(im,'a.jpg','jpg');%可以修改保存的格式
    复制代码


    saveas
    Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】 
    1. % saveas(figure_handle,filename,fileformat)
    2. plot(1:10);
    3. saveas(gcf,‘myfig.jpg’)
    复制代码
    它有三种书写方式
    saveas(gcf,['D:\保存的数据文件\方法1.png']) 
    saveas(gcf,['D:\保存的数据文件\方法2','.png']) 
    saveas(gcf,['D:\保存的数据文件\','方法3','.png'])

    用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'])
    把图片保存到指定目录并编号
    saveas(gcf,['C:\Users\shitao\Desktop\s3\',int2str(i),'.jpg']);
    1. mov=aviread('C:\Users\shitao\Desktop\s5\2.avi');%读入视频
    2. Vframes=size(mov,2);%读取视频的帧数
    3. figure
    4. for i=1:Vframes
    5. % strtemp=strcat('C:\Users\shitao\Desktop\s2\',int2str(i),'.','jpg');%将每帧转成.jpg的图片
    6. I=mov(i).cdata;
    7. imshow(I);
    8. %此处添加图像处理内容,如对图像画框,画线等操作
    9. saveas(gcf,['C:\Users\shitao\Desktop\s2\',int2str(i),'.jpg']);
    10. %imwrite(mov(i).cdata(:,:,:),strtemp); %把图像写入磁盘
    11. end
    复制代码
    saveas与imwrite的区别
    saveas(handle['目录','文件名'])  
    如果只有一幅图,handle设为gcf
    如果有多副,handle需单独设置
    imwrite(image_data,['directory','filename'])
    需要与getframe连用
    两个命令都可以用来保存图像,区别在于
    1、背景色:saveas保存的图像 背景色自动设置为白色,imwrite保存图像为所见即所得
    2、图像大小: saveas无视你设置的图像大小,按默认保存,imwrite保存所见即所得
    1. contrast example:在当前目录下image文件夹下找到两个图像,对比一下
    2. clear
    3. clc
    4. x=0:pi/100:2*pi;
    5. y=sin(x);
    6. h=plot(x,y);  % h为plot线的句柄handle
    7. set(gcf,'position',[80,100,400,600])
    8. % 将图像设置为距屏幕左下角 [80,像素
    9. % 图像大小设置为400*600像素
    10. set(gcf,'color',[1,1,1]) % 背景色设置为白色
    11. mkdir image 
    12. % 在当前文件夹下新建image文件夹,如果已存在会warning,不影响运行
    13. % ========================
    14. saveas(gcf,['image','test1.jpg'])
    15. % ========================
    16. f=getframe(gcf);
    17. imwrite(f.cdata,['image','test2.jpg'])
    复制代码
    printf
    用法:print(图形句柄,存储格式,文件名); 
    • 图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3.用gcf可以获取当前窗口句柄。
    • 指定存储格式。常用的有:
      • png格式:?-dpng‘ (推荐这一种,与bmp格式一样清晰,文件也不大)
      • jpeg: ?-djpeg‘(文件小,较清晰)
      • tiff: ?-dtiff‘
      • bmp: ?-dbitmap‘(清晰,文件极大)
      • gif: ?-dgif‘(文件小但不清晰)

    例如
    1. <font color="#000000" size="2">% print(figure_handle,fileformat,filename)
    2. x=-pi:2*pi/300:pi;
    3. y=sin(x);
    4. plot(x,y);
    5. %Matlab根据文件扩展名,自动保存为相应格式图片,另外路径可以是绝对也可以是相对
    6. print(gcf,'-dpng','abc.png')   %保存为png格式的图片到当前路径</font>
    复制代码
    注意:print函数必须紧跟在plot函数之后使用。

  评论这张
 
阅读(30)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017