2012-08-31 115 views
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); 

请帮助我。

谢谢。

回答

0

工作在这里很好,我虽然因为RLE改变压缩为“无”和MSVC不会不会,我用和的Indeo /的Cinepak不会与x64的工作真彩色图像工作。 (不是任何版本的indeo,奇怪)

我的猜测是,你需要一个drawnowimshow命令清除缓冲区,所以你有一个图像复制。我第一次运行它时产生了一个不同的错误,这似乎证实了这一点,但我无法重现那个错误。它绝对符合drawnow;英寸

更新:对于运行win7 x64的任何人,您应该可以使用'i420'作为您的编解码器。使用上面的代码可以在imshow后用drawnow正常工作。