我正在尝试使用VideoWriter
从带有2个子图的图中在MATLAB中创建动画文件。但是,我得到的avi文件只包含一个子图。
以下是代码:
clc
clear
vidObj = VideoWriter('randdata');
open(vidObj)
figure (1)
for i = 1:100
clf
subplot(1,2,1)
imagesc(rand(100))
subplot(1,2,2)
imagesc(rand(100))
drawnow
CF = getframe;
writeVideo(vidObj,CF);
end
这里肯定会有一些简单的错误,但我不知道是什么。我想捕获整个数字。
答案 0 :(得分:2)
第一行中的documentation for getframe
个州:
F = getframe捕获当前的轴
所以这是捕捉轴而不是数字。
您希望按照文档
中的说明使用它F = getframe(图)捕获图中标识的数字。 如果要捕获图形窗口的整个内部,请指定一个图形,包括轴标题,标签和刻度线。捕获的电影帧不包括图形菜单和工具栏。
所以你的代码应该是
clc; clear
vidObj = VideoWriter('randdata');
open(vidObj);
figure(1);
for ii = 1:100
clf
subplot(1,2,1)
imagesc(rand(100))
subplot(1,2,2)
imagesc(rand(100))
drawnow;
% The gcf is key. You could have also used 'f = figure' earlier, and getframe(f)
CF = getframe(gcf);
writeVideo(vidObj,CF);
end
为方便起见,您可能希望获得一个像流行(和简单)gif
一样的文件交换功能来创建GIF动画。