Чтение следующего видеокадра
Создать VideoReader объект для файла примера фильма xylophone.mp4.
v = VideoReader('xylophone.mp4');Считывайте все кадры из видео, по одному кадру за раз.
while hasFrame(v) frame = readFrame(v); end
Отображение информации о последнем кадре, возвращенном readFrame.
whos frameName 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);v - Объект Input VideoReaderVideoReader объектВведите объект VideyReader. Используйте VideoReader для создания объекта VideoReader из видеофайла.
video - Данные видеокадраДанные видеокадра, возвращаемые в виде массива. Размеры и тип данных video зависят от VideoFormat имущество obj.
В следующей таблице перечислены тип данных и измерения video для большинства файлов. H - высота кадра изображения и W - ширина кадра изображения. Когда VideoFormat имущество obj является 'Indexed', тип данных и размеры video зависит от того, звоните ли вы read с 'native' аргумент.
Значение obj.VideoFormat | Тип данных video | Размеры video | Описание |
|---|---|---|---|
'RGB24', с указанием или без указания 'native' | uint8 |
| RGB24 изображение |
'Grayscale', без указания 'native' | uint8 |
| Изображение в градациях серого |
'Indexed', без указания 'native' | uint8 |
| RGB24 изображение |
'Grayscale' или 'Indexed', указание 'native' | struct | 1 по 1 | Фильм MATLAB ®, представляющий собой массив массивов структуры кадров, каждый из которых содержит поля |
Для файлов Motion JPEG 2000 тип данных и размеры video являются следующими.
Значение obj.VideoFormat | Тип данных video | Размеры video | Описание |
|---|---|---|---|
'Mono8' | uint8 |
| Моноизображение |
'Mono8 Signed' | int8 |
| Изображение с подписью Mono |
'Mono16' | uint16 |
| Моноизображение |
'Mono16 Signed' | int16 |
| Изображение с подписью Mono |
'RGB24' | uint8 |
| RGB24 изображение |
'RGB24 Signed' | int8 |
| RGB24 подписанное изображение |
'RGB48' | uint16 |
| RGB48 изображение |
'RGB48 Signed' | int16 |
| RGB48 подписанное изображение |
'native' - Флаг для использования формата, указанного в VideoFormat собственностьФлаг для использования формата, указанного в VideoFormat свойство, указанное как вектор символов или строковый скаляр, 'native'.
Типы данных: char | string
Для некоторых файлов AVI, MOV или MP4 в Windows ® используйте readFrame функция чтения всех кадров в файле может привести к количеству кадров, отличному от значения, возвращаемого NumFrames имущества VideoReader объект.
Примечания и ограничения по использованию:
Создание кода для readFrame не поддерживает необязательный позиционный аргумент native.
Создать код, использующий макет строки-основной - Создать код, использующий макет строки-основной массив (кодер MATLAB).
Ограничения размера массива - для генерации кода максимальное количество элементов массива ограничено генератором кода и целевым оборудованием. Дополнительные сведения см. в разделе Ограничения размера массива для создания кода (кодер MATLAB).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.