我在stackoverflow中搜索了一个类似的问题,发现了问题“movie2avi-frame-size-error-and-keeping-frame-size-constant”。不幸的是,那里给出的答案并没有解决我的问题(有人建议使用 xlim、ylim 和 zlim)。
在接下来的内容中,我发送了一个对其他地方给出的著名示例进行了轻微修改的版本。
%# figure
figure, set(gcf, 'Color','white')
Z = peaks; surf(Z); axis tight
set(gca, 'nextplot','replacechildren', 'Visible','off');
[az,el]=view;
xl=xlim;
yl=ylim;
zl=zlim;
%# preallocate
nFrames = 20;
mov(1:nFrames) = struct('cdata',[], 'colormap',[]);
%# create movie
for k=1:nFrames
view([(az-k*10) el]);
xlim(xl);ylim(yl);zlim(zl);
drawnow;pause(0.1);
mov(k) = getframe(gca);
end
close(gcf)
%# save as AVI file, and open it using system video player
movie2avi(mov, 'myPeaks1.avi', 'compression','None', 'fps',10);
这个想法是旋转图形并创建电影。除了最后一个命令,即movie2avi,一切正常。错误消息是
Error using avifile/addframe>ValidateFrame (line 290)
Frame must be 435 by 344.
Error in avifile/addframe (line 158)
ValidateFrame(aviobj,width, height,dims);
Error in movie2avi (line 67)
avimov = addframe(avimov,mov);
Error in more_video_test (line 24)
movie2avi(mov, 'myPeaks1.avi', 'compression','None', 'fps',10);
我在 stackoverflow 中查看了在 matlab 中创建视频的方法,发现:
a) 解决方案 ffmpeg 有效,但我想避免它。
b)所有其他解决方案甚至 QTWriter 都失败了。如何修复框架大小以便所有其他解决方案都能正常工作?
非常感谢。
埃德