Matlab - создание сжатого цветного видео - PullRequest
0 голосов
/ 27 сентября 2019

Я использую videoWriter из MatLab для получения результатов моих вычислений.Моя проблема в том, что созданные видео слишком тяжелые.7k кадров, 1000x300 пикселей каждый кадр, вес около 2 ГБ, что слишком много.

Мне нужно немного цвета в моих видео, поэтому я делаю:

 v=VideoWriter(vidName, 'Indexed AVI');
 v.FrameRate=25;

 map=[ 0 0 0       % (1) Black
       1 0 0       % (2) Red
       1 1 1       % (3) White
       0 1 0       % (4) Green
       0 0 1       % (5) Blue
       1 0 1 ];    % (6) Purple
 v.Colormap=map;
 open(v);

документация гласит, что Indexed AVI видео не может быть сжато, а Motion JPEG 2000 видео может быть сжато, но оно не может быть цветным.Это правильно?

Для сжатых и цветных видео, похоже, есть тип MPEG-4.Есть ответ этой ветки , который говорит об этом.Но я не понимаю, что такое f (что это за объект, ...).Кроме того, данные, которые он помещает в это, являются изображением (я полагаю, созданным функцией MatLab).Но у меня есть только сетка, которая представляет каждый пиксель.Могу ли я напрямую использовать эту сетку для установки данных f?

РЕДАКТИРОВАТЬ:

Способ хранения данных:

grid=ones(1000, 300);
...
% Some computation
...
writeVideo(v, grid);

1 Ответ

0 голосов
/ 27 сентября 2019

Проблема в том, что у вас есть индексированное цветное видео, а кодеки с потерями, доступные в VideoWriter, не поддерживают индексированные кадры.Однако они поддерживают RGB-кадры.Поэтому вам необходимо преобразовать каждый кадр в RGB с помощью функции ind2rgb перед его кодированием.

...