readFrame

Считайте кадр видео из видеофайла

Синтаксис

video = readFrame(v)
video = readFrame(v,'native')

Описание

пример

video = readFrame(v) читает следующий доступный кадр видео из файла, сопоставленного с v.

video = readFrame(v,'native') возвращает данные в формате, заданном свойством VideoFormat.

Примеры

свернуть все

Создайте объект VideoReader для файла ролика в качестве примера, xylophone.mp4.

v = VideoReader('xylophone.mp4');

Считайте все кадры видео.

while hasFrame(v)
    video = readFrame(v);
end
whos video
  Name         Size                Bytes  Class    Attributes

  video      240x320x3            230400  uint8              

Создайте объект считать файл примера, xylophone.mp4.

v = VideoReader('xylophone.mp4');

Укажите, что чтение должно начать 2,5 секунды с начала видео.

v.CurrentTime = 2.5;

Создайте оси. Затем считайте кадры видео, пока больше кадров не будет доступно в чтение.

currAxes = axes;
while hasFrame(v)
    vidFrame = readFrame(v);
    image(vidFrame, 'Parent', currAxes);
    currAxes.Visible = 'off';
    pause(1/v.FrameRate);
end

Читайте и воспроизведите демонстрационный файл ролика, xylophone.mp4.

Создайте объект VideoReader считать данные из файла примера. Затем определите ширину и высоту видео.

xyloObj = VideoReader('xylophone.mp4');

vidWidth = xyloObj.Width;
vidHeight = xyloObj.Height;

Создайте массив структур фильма, mov.

mov = struct('cdata',zeros(vidHeight,vidWidth,3,'uint8'),...
    'colormap',[]);

Считайте один кадр за один раз, пока конец видео не будет достигнут.

k = 1;
while hasFrame(xyloObj)
    mov(k).cdata = readFrame(xyloObj);
    k = k+1;
end

Измерьте фигуру на основе ширины и высоты видео. Затем воспроизведите фильм однажды в частоте видеокадров.

hf = figure;
set(hf,'position',[150 150 vidWidth vidHeight]);

movie(hf,mov,1,xyloObj.FrameRate);

Входные параметры

свернуть все

Объект Input VideoReader. Используйте функцию VideoReader, чтобы создать объект VideoReader из вашего видеофайла.

Выходные аргументы

свернуть все

Данные о кадре видео, возвращенные как массив. Размерности и тип данных video зависят от свойства VideoFormat obj.

В следующей таблице перечислены тип данных и размерности video для большинства файлов. H является высотой фрейма изображения, и W является шириной фрейма изображения. Когда свойством VideoFormat obj является 'Indexed', тип данных и размерности video зависят от того, вызываете ли вы read с аргументом 'native'.

Значение obj.VideoFormatТип данных videoРазмерности videoОписание
'RGB24', с или не задавая 'native'uint8

H-by-W-by-3

Изображение RGB24

'Grayscale', не задавая 'native'uint8

H-by-W-by-1

Полутоновое изображение

'Indexed', не задавая 'native'uint8

H-by-W-by-3

Изображение RGB24

'Grayscale' или 'Indexed', задавая 'native'struct

1 на 1

Фильм MATLAB®, который является массивом массивов структур кадра, каждый содержащий поля cdata и colormap.

Для файлов Motion JPEG 2000 тип данных и размерности video следующие.

Значение obj.VideoFormatТип данных videoРазмерности videoОписание
'Mono8'uint8

H-by-W-by-1

Моно изображение

'Mono8 Signed'int8

H-by-W-by-1

Моно изображение со знаком

'Mono16'uint16

H-by-W-by-1

Моно изображение

'Mono16 Signed'int16

H-by-W-by-1

Моно изображение со знаком

'RGB24'uint8

H-by-W-by-3

Изображение RGB24

'RGB24 Signed'int8

H-by-W-by-3

RGB24 подписанное изображение

'RGB48'uint16

H-by-W-by-3

Изображение RGB48

'RGB48 Signed'int16

H-by-W-by-3

RGB48 подписанное изображение

Отметьте, чтобы использовать формат, заданный в свойстве VideoFormat, заданном как вектор символов или скаляр строки, 'native'.

Типы данных: char | string

Расширенные возможности

Смотрите также

| |

Введенный в R2014b