Сохраненный файл фильма Matlab воспроизводит только последний кадр - PullRequest
0 голосов
/ 11 июня 2018

Я сделал фильм в Matlab, и когда я запускаю свой код, фильм работает нормально и выглядит великолепно, но когда я прикрепляю видео к электронному письму, появляется видео, показывающее только последний кадр фильма.

В моем цикле for со всем кодом построения я использовал команду getframe с переменной G перед завершением цикла:

G = getframe;

Затем я написал:

v = VideoWriter('my movie.avi','Motion JPEG AVI');

v.Quality = 100;

open(v)

writeVideo(v,G)

close(v)

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

Чего мне не хватает?

Спасибо!

1 Ответ

0 голосов
/ 11 июня 2018

Функция MATLAB getframe() возвращает текущий кадр, и вы записываете его в переменную G в цикле for. перезаписывает G на каждой итерации, поэтому в вашей программе G будет содержать только последний кадр.Когда вы записываете его в видеофайл, это видео также будет содержать только один последний кадр, как вы заметили.

Решение состоит в том, чтобы создать массив кадров, как показано в примере о том, какдля записи видео с использованием getframe() на страницах справки MATLAB:

movie_frames(N) = struct('cdata',[],'colormap',[]);    % pre-allocate frames struct
for k=1:N
    % Your plotting code here

    movie_frames(k) = getframe();
end

Функция writeVideo() фактически предназначена для работы с такими массивами фреймов, это позволяет сохранятьвидео так же просто, как

v = VideoWriter('test_video.avi');
v.open();
v.writeVideo(movie_frames);
v.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...