用于将tiff集合转换为avi的Matlab代码不起作用

时间:2018-10-18 09:21:02

标签: matlab loops tiff avi

我想将95个tiff转换为avi。

这是我正在使用的代码:

 v = VideoWriter('newfile.avi','Uncompressed AVI');
 open(v);
 %95 images
 for k=1:95      
     yr=2005;
     icnt=yr+1;
frame = sprintf('scale%dRCP2.6.tif', icnt);
     input = imread(frame);

     writeVideo(v,input);
 end
 close(v);

它创建了avi文件,但似乎只能提取一张图像? 我认为在循环中读取框架时可能会出现问题,但我无法弄清楚出了什么问题。

我也尝试过这种方法:

    % Create a video writer object
writerObj = VideoWriter('Video.avi');

% Set frame rate
writerObj.FrameRate = 10;

% Open video writer object and write frames sequentially
open(writerObj)
yr=2005;
for i=1:95;
icnt=yr+1;
frame = sprintf('scale%dRCP2.6.tif', icnt);
     input = imread(frame);

     % Write frame now
     writeVideo(writerObj, input);
end

% Close the video writer object
close(writerObj);

但是使用此代码,avi根本无法工作。没有图像插入其中。

1 个答案:

答案 0 :(得分:0)

您的问题与源图像格式(tiff)无关,您只是添加始终相同的图像scale2006RCP2.6.tif

考虑到第一个代码,错误是icnt=yr+1,我猜应该是icnt=yr+i

修复此问题,它在我的Matlab2016b上正常工作,在Windows PC上显示了十张图像。一些说明:

  • 指定帧速率(就像您在第二个代码中所做的那样),但是请注意每秒观看10个数字太高了:v.FrameRate = 1听起来更好;

  • 验证所有图像的大小是否相同。如果没有,请考虑将它们全部缩放为相同大小。