Matlab код для преобразования коллекции TIFF в AVI не работает - PullRequest
0 голосов
/ 18 октября 2018

Я хочу преобразовать 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 голосов
/ 18 октября 2018

Ваша проблема не связана с форматом исходного изображения (tiff), вы просто добавляете всегда одно и то же изображение scale2006RCP2.6.tif.

С учетом первого кода ошибка составляет icnt=yr+1, чтоЯ предполагаю, что вместо этого должно быть icnt=yr+i;

Исправлено: он корректно работал на моем Matlab2016b с десятью изображениями на моем ПК с Windows.Некоторые замечания:

  • задайте частоту кадров (как вы делали во втором коде), но учтите, что просмотр 10 цифр в секунду - это слишком много: v.FrameRate = 1 звучит лучше;

  • убедитесь, что все изображения имеют одинаковый размер.Если нет, попробуйте изменить их все до одного размера.

...