Как извлечь кадры из видеоклипа yuv 420 и сохранить их как разные изображения, используя matlab? - PullRequest
2 голосов
/ 01 сентября 2010

Как извлечь кадры из видео yuv 420?Допустим, я хочу сохранить их как неподвижные изображения.Как?

Ответы [ 3 ]

1 голос
/ 01 сентября 2010

Вот заявление от MathWorks File Exchange , которое должно делать то, что вы хотите:

Функция loadFileYuv из вышеприведенного представления загрузит файл YUV и вернет массив кадров фильма. Каждый кадр фильма представляет собой структуру со следующими полями:

  • cdata: матрица значений uint8. Размеры высота-ширина-на-3.
  • colormap: Матрица двойных чисел N-3. В системах истинного цвета пусто.

Таким образом, вы можете извлечь поле cdata из каждого кадра фильма в массиве и сохранить / использовать его как изображение RGB.

Ваш код может выглядеть примерно так:

nFrames = 115;     %# The number of frames
vidHeight = 352;   %# The image height
vidWidth = 240;    %# The image width
mov = loadFileYuv('myVideo.yuv',vidHeight,vidWidth,1:nFrames);  %# Read the file
for k = 1:nFrames  %# Loop over the movie frames
  imwrite(mov(k).cdata,['myImage' int2str(k) '.bmp']);  %# Save each frame to
                                                        %#   a bitmap image file
end
0 голосов
/ 06 октября 2013

Вы можете использовать этот код ниже:

vidObj1 = mmreader('testballroom_0.avi');  %# Create a video file object
nFrames = vidObj1.NumberOfFrames;   %# Get the number of frames
vidHeight1 = vidObj1.Height;         %# Get the image height
vidWidth1 = vidObj1.Width;           %# Get the image width

%# Preallocate the structure array of movie frames:

mov1(1:nFrames) = struct('cdata',zeros(vidHeight1,vidWidth1,3,'uint8'),...
                    'colormap',[]);  %# Note that colormap is empty!

Вы можете получить доступ к каждому кадру из матрицы mov1:)

0 голосов
/ 01 сентября 2010

извините, я не могу помочь с Matlab, но в командной строке вы можете сделать это с помощью ffmpeg

ffmpeg -i input.yuv -r 1 -f image2 images%05d.png

-r 1 означает скорость = каждый кадр

...