用于将 tiff 集合转换为 avi 的 Matlab 代码不起作用
Matlab code for converting collection of tiffs to avi isn't working
我想将 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 根本不起作用。没有图像被拉入其中。
您的问题与源图像格式 (tiff) 无关,您只是添加了始终相同的图像 scale2006RCP2.6.tif
。
考虑到第一个代码,错误是icnt=yr+1
,我猜应该是icnt=yr+i
;
修复了这个问题,它在我的 Matlab2016b 上正常工作,在我的 Windows 电脑上有十张图片。一些评论:
指定帧率(就像你在第二个代码中所做的那样),但考虑到每秒观看 10 个数字太多了:v.FrameRate = 1
听起来更好;
验证所有图像的大小是否相同。如果不是,请考虑将它们全部重新缩放到相同的大小。
我想将 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 根本不起作用。没有图像被拉入其中。
您的问题与源图像格式 (tiff) 无关,您只是添加了始终相同的图像 scale2006RCP2.6.tif
。
考虑到第一个代码,错误是icnt=yr+1
,我猜应该是icnt=yr+i
;
修复了这个问题,它在我的 Matlab2016b 上正常工作,在我的 Windows 电脑上有十张图片。一些评论:
指定帧率(就像你在第二个代码中所做的那样),但考虑到每秒观看 10 个数字太多了:
v.FrameRate = 1
听起来更好;验证所有图像的大小是否相同。如果不是,请考虑将它们全部重新缩放到相同的大小。