exponenta event banner

readFrame

Чтение следующего видеокадра

Описание

пример

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

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

Примеры

свернуть все

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

v = VideoReader('xylophone.mp4');

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

while hasFrame(v)
    frame = readFrame(v);
end

Отображение информации о последнем кадре, возвращенном readFrame.

whos frame
  Name         Size                Bytes  Class    Attributes

  frame      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);

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

свернуть все

Введите объект VideyReader. Используйте VideoReader для создания объекта VideoReader из видеофайла.

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

свернуть все

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

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

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

Hоколо-W-к-3

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

'Grayscale', без указания 'native'uint8

Hоколо-W-по-1

Изображение в градациях серого

'Indexed', без указания 'native'uint8

Hоколо-W-к-3

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

'Grayscale' или 'Indexed', указание 'native'struct

1 по 1

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

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

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

Hоколо-W-по-1

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

'Mono8 Signed'int8

Hоколо-W-по-1

Изображение с подписью Mono

'Mono16'uint16

Hоколо-W-по-1

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

'Mono16 Signed'int16

Hоколо-W-по-1

Изображение с подписью Mono

'RGB24'uint8

Hоколо-W-к-3

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

'RGB24 Signed'int8

Hоколо-W-к-3

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

'RGB48'uint16

Hоколо-W-к-3

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

'RGB48 Signed'int16

Hоколо-W-к-3

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

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

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

Ограничения

  • Для некоторых файлов AVI, MOV или MP4 в Windows ® используйте readFrame функция чтения всех кадров в файле может привести к количеству кадров, отличному от значения, возвращаемого NumFrames имущества VideoReader объект.

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

.
Представлен в R2014b