使用pcolor制作一部没有getframe的电影

时间:2013-05-23 15:14:16

标签: matlab movie

我在MATLAB中运行模拟,我想从帧中制作电影。有超过4000帧,至少1600x1600的大小。每个帧都是2D矩阵。我可以使用pcolor将其可视化,然后使用getframe制作电影。但是由于大小很大并且模拟在一夜之间运行,我会遇到很多屏幕保护程序等问题。在MATLAB中有没有更好的方法呢?其他软件的解决方案也没问题。

2 个答案:

答案 0 :(得分:2)

在使用pcolor()绘制图片之前,尝试使用h = figure('visible', 'off');创建一个不可见的图形,并使用addframe(avi_file, h);向来自隐形图形的avi添加一个框架。可以在Render MATLAB figure in memory

找到更详细的讨论

更新:似乎无法在无头Matlab中使用getframe()获取帧,因此使用VideoWritermovie2avi的选项将无效。如果有人成功,请在评论部分纠正我。

答案 1 :(得分:1)

使用@Bee答案中提供的链接和一些修补问题解决了这样的问题:

aviobj=VideoWriter(filename);
open(aviobj);
hFig=figure('Visible','Off');

for loop comes here
    cla

    %All Drawing stuff    

    img = hardcopy(hFig, '-dzbuffer', '-r0');
    writeVideo(aviobj, im2frame(img));
end
close(aviobj)

请注意,它使用的是VideoWriter而不是已弃用的avifileaddframe,并且它在内存中的渲染不在磁盘上,因此它的速度相当快。