Создание видео таймлапса Используя захват, состоящий из нескольких несмежных участков,

В этом примере показано, как создать видео таймлапса, не используя все системы координат захвата.

Image Acquisition Toolbox™ дает возможность производить видео таймлапса. Самый эффективный способ сделать захват таймлапса состоит в том, чтобы использовать встроенную способность Image Acquisition Toolbox регистрировать системы координат непосредственно к файлу AVI и его способности выполнить децимацию времени путем сохранения только части всех систем координат, полученных камерой.

См. последовательность таймлапса один день длиной. (21 секунда)

Создайте объект ввода видео

Прежде, чем получить изображения с помощью Image Acquisition Toolbox, создайте объект ввода видео.

% When executing the following code, you may need to
% modify it to match your acquisition hardware.
vid = videoinput('winvideo',1,'RGB24_352x288');

Определите частоту кадров

Большинство устройств не позволяет вам управлять своей частотой кадров. Лучше определять частоту кадров экспериментально путем получения систем координат и анализа меток времени систем координат.

vid.FramesPerTrigger = 100;
start(vid);
wait(vid,Inf);

% Retrieve the frames and timestamps for each frame.
numframes = vid.FramesAvailable;
[frames,time] = getdata(vid,numframes);

% Calculate the frame rate by taking the average difference
% between the timestamps for each frame.
framerate = mean(1./diff(time))
framerate =

   17.5296

Задайте захват, состоящий из нескольких несмежных участков,

FrameGrabInterval свойство задает, как часто системы координат хранятся от видеопотока. Например, если мы устанавливаем его на 5, затем только 1 из 5 систем координат сохранена - другие 4 системы координат будут отброшены.

% We want to compress 30 seconds into 3 seconds, so
% only acquire every tenth frame.
vid.FrameGrabInterval = 10;

Определите количество кадров, чтобы получить

Чтобы определить сколько систем координат, чтобы получить всего, вычислите общее количество систем координат, которые были бы получены в частоте кадров устройства, и затем делиться на FrameGrabInterval.

capturetime = 30;
interval = vid.FrameGrabInterval;
numframes = floor(capturetime * framerate / interval)
numframes =

    52

vid.FramesPerTrigger = numframes;

Сконфигурируйте дисковое логгирование AVI

Из-за большого количества систем координат, которые будут получены, это более практично, чтобы регистрировать изображения к диску, а не к памяти. Используя Image Acquisition Toolbox, можно регистрировать изображения непосредственно к файлу AVI. Мы конфигурируем это использование LoggingMode свойство.

vid.LoggingMode = 'disk';

Создайте объект VideoWriter регистрировать к, с помощью VideoWriter команда. Мы должны задать имя файла, чтобы использовать, и затем установить частоту кадров, в которой должен быть воспроизведен файл AVI. Затем установите DiskLogger свойство ввода видео возражает против объекта VideoWriter.

vwObj = VideoWriter('timelapsevideo','Uncompressed AVI');
vwObj.FrameRate = framerate;
vid.DiskLogger = vwObj;
vid
Summary of Video Input Object Using 'Logitech QuickCam Fusion'.

   Acquisition Source(s):  input1 is available.

  Acquisition Parameters:  'input1' is the current selected source.
                           91 frames per trigger using the selected source.
                           'RGB24_352x288' video data to be logged upon START.
                           Grabbing first of every 10 frame(s).
                           Log data to 'disk' on trigger.

      Trigger Parameters:  1 'immediate' trigger(s) on START.

                  Status:  Waiting for START.
                           100 frames acquired since starting.
                           0 frames available for GETDATA.

Выполните захват таймлапса

Запустите захват таймлапса и ожидайте захвата, чтобы завершиться. Обратите внимание на то, что Image Acquisition Toolbox не связывает MATLAB®, в то время как это получает. Можно запустить захват и продолжить работать в MATLAB.

start(vid);

% Wait for the capture to complete before continuing.
wait(vid,Inf);

Закройте файл AVI

Если получение завершается, получите объект файла AVI и используйте close функция, чтобы высвободить средства, сопоставленные с ним.

vwObj = vid.DiskLogger;
close(vwObj);

Воспроизведите таймлапс последовательность AVI

Чтобы воспроизвести таймлапс последовательность AVI, щелкните правой кнопкой по имени файла в Браузере текущей папки MATLAB и выберите Open Outside MATLAB из контекстного меню.

Очистка

Когда вы закончите с объектом ввода видео, необходимо использовать delete функционируйте, чтобы освободить аппаратные ресурсы, сопоставленные с ним и удалить его из рабочей области с помощью clear функция.

delete(vid);
clear vid;