我想动画图像并将其保存为gif文件。制作一个方程后,我在一个循环中使用imshow和getframe连续帧捕获,然后我再一个图像和转换成一个索引文件。我试过其他方法,但总是提出了同样的问题。甚至样品的峰值/冲浪的函数在Matlab的文档创建动画gif不输出正确的gif文件(这意味着它落后是因为重复帧)。
我的问题是,看似随机的时候,似乎getframe抓住了前一帧而不是目前的一个。这个问题不会发生在其他电脑我已经试过,所以我觉得这是一个问题,我的cpu和图形处理器之间的通信(Mac OSX 10.7.5, Macbook Pro w视网膜显示屏17”)。好像CPU处理图像的速度比GPU可以寄给我的显示器。任何见解这个理论是感激。我试着更新Java和Matlab (v.2012a)都无济于事。我也安装了OSX的最近更新,其中一个解决帧刷新率为视频游戏。
当我给电脑imshow和getframe操作之间的一段时间,现在“关闭”命令(请参见下面的代码),以便getframe不可能捕获错误的图像,gif出来。否则,我会重复帧的输出在imgur专辑(见图片)。我使用“关闭”的问题是它真的延长执行时间(约4 x)。
我的下面的代码,可能产生期望的结果,没有大多数人的电脑上取消“关闭”。我意识到这是一个艰难的问题解决,因为它似乎是与我的GPU,但我不知要做什么……谢谢你的时间。
清晰的所有
抽搐
endloop = 26;
为我= 1:endloop
如果我< (endloop / 2 + 2)
f (i) = 3 + i;
其他的
(我)= f(张)1;
结束
结束
(x, y) = meshgrid (256:255 256:255);
z =√x ^ 2 + y ^ 2);
为k = 1: endloop
c = (z < f (k));
cf = fftshift (fft2 (c));
fl =日志(1 + abs (cf));调频= max (fl (:));
imshow (im2uint8 (fl / fm));
帧= getframe;
我= frame2im(框架);
[imind,地图]= rgb2ind (im, 256);
如果k = = 1
imwrite (imind,地图,“circle3.gif”,“延迟时间”,0.1,“LoopCount”、正);
其他的
imwrite (imind,地图,“circle3.gif”,“延迟时间”,0.1,“写模式”,“添加”);
结束
结束
关闭所有
toc