我在MATLAB中运行模拟,我想从帧中制作电影。有超过4000帧,至少1600x1600的大小。每个帧都是2D矩阵。我可以使用pcolor
将其可视化,然后使用getframe
制作电影。但是由于大小很大并且模拟在一夜之间运行,我会遇到很多屏幕保护程序等问题。在MATLAB中有没有更好的方法呢?其他软件的解决方案也没问题。
答案 0 :(得分:2)
在使用pcolor()
绘制图片之前,尝试使用h = figure('visible', 'off');
创建一个不可见的图形,并使用addframe(avi_file, h);
向来自隐形图形的avi添加一个框架。可以在Render MATLAB figure in memory
更新:似乎无法在无头Matlab中使用getframe()
获取帧,因此使用VideoWriter
和movie2avi
的选项将无效。如果有人成功,请在评论部分纠正我。
答案 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
而不是已弃用的avifile
和addframe
,并且它在内存中的渲染不在磁盘上,因此它的速度相当快。