【发布时间】:2015-07-21 05:07:15
【问题描述】:
我正在尝试在 Matlab 中创建一部电影,在其中多次运行我的代码,并且每次运行的输出都添加到视频中。但是,当我实际尝试将帧添加到电影时,我不断收到一个奇怪的错误。这是我的代码的 sn-p:
writerobj = VideoWriter('RHI_P.avi');
writerobj.FrameRate = 60;
open(writerobj);
\\ Runs through code and generates a pcolor figure
figure(14);
\\ Plotting script goes here....
fig = figure;
F = getframe(fig);
writerobj = writeVideo(writerobj,F);
>> Error using VideoWriter/writeVideo: Too many output arguments.
但是,如果我查看“help writeVideo”,它会说:“writeVideo(OBJ,FRAME) 将 FRAME 写入与 OBJ 关联的视频文件。”
从我的角度来看(尽管我可能是错的!),我正在遵循给出的示例。我已经坚持了几天了。有人有什么建议吗?
另外,我现在一直在使用 getframe(gcf) 作为解决方法。但是,我不能继续这样做,因为我的代码需要几天时间才能运行,并且 gcf 会在启动后捕获屏幕保护程序。
【问题讨论】:
-
只是一个疯狂的猜测,但是
writerobj.writeVideo(F);呢? -
您有重现错误的示例吗?以及完整的错误信息?
-
@excaza 我用来创建 pcolor 绘图的代码需要很长时间才能运行,但我可以尝试创建一个产生相同错误的玩具示例。
-
@A.Donda 刚试了一下,还是和以前一样的错误(输出参数太多)。
-
当您的代码代表您的实际操作时,您可以使用
fig = figure;创建一个新图形,然后使用getframe(fig)存储空图形。在这种情况下,您需要像这样提供figure(14);的句柄:fig = figure(14); getframe(fig)。我不确定这是否是这里的问题。