Matlab 保存多个图像 getframe、imwrite、sprintf、num2str、doc

来源:互联网 发布:手机移动网络转换电信 编辑:程序博客网 时间:2024/06/06 23:51

clear;clc;clf;
x=0:pi/100:2*pi;
y=sin(x);
plot(x,y)
set(gcf,'color',[1 1 1]) %设置背景色为白色
title('测试图像保存')
F=getframe(gcf); % 获取整个窗口内容的图像
F1=getframe;     % 获取坐标轴为界的图像
imwrite(F.cdata,'test1.png')
imwrite(F1.cdata,'test2.png')

=======================

getframe获得的是一个架构struct类型的数据,

其中cdata子域的内容才可以用imwrite内容保存,用F.cdata表示

getframe(gcf) 即get current figure,获得窗口内图像,包含legend、title以及label。如果不添加gcf,默认为gca(get current axis)。

imwrite 可以保存jpg、png等格式图像,gif是7.0添加的,但是好像没办法保存为动画,只能保存第一帧。

与在图像界面直接利用复制,或用file>save as...保存不同的是,imwrite的背景色为窗口实际颜色,默认为灰色(RGB表示为[.7 .7 .7]),若想保留白色背景图,需添加例子中的set gcf color命令。

=====================================================

保存多个图像时,顺序命名图像文件名称需用到 num2str 或 sprintf命令

num2str(kk)将数字kk保存为字符

sprintf('格式',kk)将kk保存为需要格式的字符,尤其是图像多于10个名称需要前面补0时很好用

Note:保存多个图像时不要乱动电脑、切换窗口,getframe保存当前图像所在位置的屏幕图像,相当于截屏。如果激活其他窗口,可就没法保证截的啥了。

例:(使用ctrl+t取消注释符后运行)

============================

% clear;clc;clf
% x=0:pi/100:2*pi;
% for kk=1:3
%     plot(x,x.^kk)
%     title(['y=x^',num2str(kk)])
%     set(gcf,'color',[1 1 1])
%     F(kk)=getframe(gcf);
% %     imwrite(F(kk).cdata,['test-',num2str(kk),'.jpg'])
%     imwrite(F(kk).cdata,['test-',sprintf('%03d',kk),'.png']) % 保存文件名序号为3位数,如位数不足前面补0
% end

help很好用,在主界面也可以直接调用,例如,运行

>>doc plot


原创粉丝点击