Matlab 保存多個圖像 getframe、imwrite、sprintf、num2str、doc

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章