0

我正在为此使用 Matlab 代码。

但是当我运行它时,它显示错误。

代码 :

fig=figure;
set(fig,'DoubleBuffer','on');
set(gca,'xlim',[-80 80],'ylim',[-80 80],'NextPlot','replace','Visible','off');
mov = avifile('movie.avi','compression','cinepak');
mov.quality=90;
i=imread('white.jpg');
for k=1:1000
imshow(i);
F = getframe(gca);
mov = addframe(mov,F);
end
mov = close(mov);

错误:

??? Error using ==> capturescreen
Figure destroyed during getframe

Error in ==> getframe at 35
x=capturescreen(varargin{:});

Error in ==> a at 9
F = getframe(gca);

请帮我解决一下这个。

谢谢你。

4

1 回答 1

0

在这里可以正常工作,尽管我不得不将压缩更改为“无”,因为 RLE 和 MSVC 不适用于我正在使用的真彩色图像,并且 indeo/cinepak 不适用于 x64。(奇怪的是,不是任何一个版本的 indeo)

我的猜测是,您需要drawnowimshow命令之后清除缓冲区,以便复制图像。我第一次运行它时产生了一个不同的错误,这似乎证实了这一点,但我无法重现那个错误。它绝对适用于drawow;在。

更新:对于运行 win7 x64 的任何人,您应该能够使用“i420”作为您的编解码器。使用上面的代码对我来说无论是否drawnow在 imshow 之后都可以正常工作。

于 2012-08-31T17:29:40.600 回答