Чтение систем координат с видео, начиная с определенного времени или системы координат индекса, чтение систем координат в течение заданного интервала времени или чтение всех систем координат в видео.
Считывайте часть видеофайла, начиная с 0,5 секунды с начала файла. Затем прочтите видео системы координат начиная с индекса 100 и заканчивая файл видео.
Создайте VideoReader
объект, сопоставленный с файлом образца 'xylophone.mp4'
.
vidObj = VideoReader('xylophone.mp4');
Укажите, что чтение должно начинаться с 0,5 секунды от начала файла путем установки CurrentTime
свойство.
vidObj.CurrentTime = 0.5;
Считывайте видеокадры до тех пор, пока конец файла не будет достигнут при помощи readFrame
способ.
while hasFrame(vidObj) vidFrame = readFrame(vidObj); imshow(vidFrame) pause(1/vidObj.FrameRate); end
В качестве альтернативы можно считать системы координат из видео, начиная с заданного индекса системы координат и заканчивая видео при помощи read
способ. Задайте индексы для чтения следующим [100 Inf]
. The read
метод возвращает все системам координат, начиная с 100, в конец видео- файла.
vidframes = read(vidObj,[100 Inf]);
Чтение части видео файла путем определения времени или системы координат интервала.
Считайте видеокадры между 0,6 и 0,9 секундами. Сначала создайте объект считывателя видео и массив структур, чтобы сохранить системы координат.
vidObj = VideoReader('xylophone.mp4'); s = struct('cdata',zeros(vidObj.Height,vidObj.Width,3,'uint8'),'colormap',[]);
Затем укажите, что чтение должно начаться 0,6 секунды с начала файла путем установки CurrentTime
свойство.
vidObj.CurrentTime = 0.6;
Считывайте по одной системе координат за раз до CurrentTime
достигает 0,9 секунды. Добавьте данные из каждого видеокадра в массив структур. Просмотрите количество систем координат в массиве структур. s
- структура 1 на 10, указывающая, что было считано 10 системы координат. Для получения информации об отображении систем координат в структуре s
как фильм, смотрите movie
страница с описанием функции.
k = 1; while vidObj.CurrentTime <= 0.9 s(k).cdata = readFrame(vidObj); k = k+1; end whos s
Name Size Bytes Class Attributes s 1x10 2305344 struct
Также можно считать все системы координат за заданный интервал при помощи индексов систем координат. Для примера задайте второй аргумент read
как [18 27]
. The read
метод возвращает FrameSize
массив -by-10, указывающий, что было считано 10 системы координат.
frames = read(vidObj,[18 27]);
whos frames
Name Size Bytes Class Attributes frames 240x320x3x10 2304000 uint8
Считывайте все системы координат из видео, по одной системе координат за раз или все системы координат сразу.
Создайте объект средства чтения видео и отобразите общее количество систем координат в видео.
vidObj = VideoReader('xylophone.mp4');
vidObj.NumFrames
ans = 141
Считывайте все системы координат, по одной системе координат за раз, используя readFrame
метод и отображение систем координат.
while hasFrame(vidObj) frame = readFrame(vidObj); imshow(frame) pause(1/vidObj.FrameRate); end
Также можно считать все видеокадры сразу. The read
метод возвращает FrameSize
-by-141 массив видеокадров.
allFrames = read(vidObj);
whos allFrames
Name Size Bytes Class Attributes allFrames 240x320x3x141 32486400 uint8
The hasFrame
метод может вернуть логический 1
(true), когда значение CurrentTime
свойство равно значению Duration
свойство. Это связано с ограничением в базовых используемых API.
Поиск последней системы координат в видео файла путем установки CurrentTime
свойство к значению, близкому к Duration
значение не рекомендуется. Для некоторых файлов эта операция возвращает ошибку, указывающую, что конец файла был достигнут, даже если CurrentTime
значение меньше, чем Duration
значение. Это обычно происходит, если длительность файла больше, чем длительность видеопотока, и нет доступного видео для чтения около конца файла.
Использование Duration
свойство, ограничивающее чтение данных из файла видео, не рекомендуется. Используйте hasFrame
метод для проверки наличия доступного для чтения системы координат. Лучше всего считать данные до тех пор, пока файл не сообщит, что больше нет доступных систем координат для чтения.
Эффективность чтения видео в системах Windows ®: для достижения лучшей эффективности считывателя видео в Windows для MP4
и MOV
Файлы ® использует графическое оборудование системы для декодирования. Однако в некоторых случаях использование видеокарты для декодирования может привести к снижению эффективности в зависимости от конкретного графического оборудования в системе. Если вы замечаете более медленную эффективность устройства чтения видео в вашей системе, отключите аппаратное ускорение, набрав: matlab.video.read.UseHardwareAcceleration('off')
. Можно восстановить аппаратное ускорение путем ввода: matlab.video.read.UseHardwareAcceleration('on')
.
mmfileinfo
| movie
| read
| readFrame
| VideoReader