Создание видео Time-Lapse с использованием несмежного приобретения

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

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

Задайте несмежное приобретение

The 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.

Выполните приобретение Time-Lapse

Запустите приобретение с истекшим временем и дождитесь завершения приобретения. Обратите внимание, что 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 Time-Lapse

Чтобы воспроизвести просроченную последовательность AVI, щелкните правой кнопкой мыши имя файла в браузере Текущей папки MATLAB и выберите в контекстном меню команду Открыть вне MATLAB.

Очистка

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

delete(vid);
clear vid;