使用getframe()在MATLAB中从tiff堆栈制作avi电影

时间:2014-08-02 04:19:44

标签: matlab tiff avi movie

我正在编写一个简单的代码来将tiff堆栈转换为.avi电影。这是我目前的代码

TiffName='Un102319_1466ul_min_3.tif';
filename='movieTest';

for i=1:numel(imfinfo(TiffName))
    imshow(imread(TiffName,i))
    mov(i)=getframe(gca);

end

movie2avi(mov, filename);

imshow()工作正常,但电影仅显示图像上方的工具栏。似乎getframe并没有做我认为应该做的事情。

2 个答案:

答案 0 :(得分:1)

也许使用视频任务对象:

mov((1:nFrames) = struct('cdata', [], 'colormap',[]);

YourVideo = VideoWriter('MovieName.avi'); % you can add compression options also
YourVideo.FrameRate = 15; % Select frame rate

open(YourVideo);

for k = 1:nFrames

mov(k).cdata = getframe(gca);
writeVideo(YourVideo,mov(k).cdata);

end

close(YourVideo);

答案 1 :(得分:1)

你写的代码对我有用。我怀疑你的getframe电话是错误的。只需将其命名为,不要 gca。你想要当前数字,而不是当前的轴。

因此:

TiffName = 'Un102319_1466ul_min_3.tif';
filename='movieTest';

in = imfinfo(TiffName);
for k = 1 : numel(in)
    imshow(imread(TiffName, k));
    mov(k) = getframe; %// Change here
end

movie2avi(mov, filename);

这将为您提供所需内容,但movie2avi在压缩算法方面没有提供很多选择。因此,我建议您使用VideoWriter方法并查看Benoit_11的答案。

祝你好运!