我正在编写一个简单的代码来将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并没有做我认为应该做的事情。
答案 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的答案。