Следующие подразделы описывают, как управлять различными аспектами регистрации данных.
Определение режима журналирования
Определение количества кадров, чтобы регистрировать
Определение, сколько кадров регистрировалось начиная с объекта, было запущено
Определение, сколько кадров в настоящее время доступно в буфере памяти
При задержке регистрации данных после того, как выполняется триггер
Определение нескольких триггерного выполнения
Используя свойство объекта LoggingMode
ввода видео, можно управлять, где тулбокс регистрирует полученные кадры данных.
Значением по умолчанию для свойства LoggingMode
является 'memory'
. В этом режиме, данных логов тулбокса к буферу в памяти. Если вы хотите принести данные изображения в рабочую область MATLAB®, необходимо регистрировать кадры к памяти. Функции, обеспеченные тулбоксом, чтобы переместить данные в рабочую область, все работают с буфером памяти. Для получения дополнительной информации смотрите Данные изображения Обеспечения в рабочее пространство MATLAB.
Вы можете также данные логов к дисковому файлу путем установки свойства LoggingMode
на 'disk'
или на 'disk&memory'
. Путем журналирования кадров к дисковому файлу вы создаете постоянную запись кадров, которые вы получаете. Например, это кодовые наборы значение свойства LoggingMode
объекта vid
ввода видео к 'disk&memory'
.
vid.LoggingMode = 'disk&memory';
Поскольку тулбокс хранит фреймы изображения в формате Чередования аудио и видео (AVI), можно просмотреть регистрируемые кадры в любом стандартном медиаплеере. Для получения дополнительной информации смотрите Данные изображения Журналирования к Диску.
Чтобы получить список опций, можно использовать на функции, нажать клавишу Tab после ввода функции на командной строке MATLAB. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой функции завершения вкладки "Дополнительно" смотрите Используя Заполнение клавишей Tab для Функций.
В программном обеспечении Image Acquisition Toolbox™ вы задаете объем данных, который вы хотите получить как количество кадров на триггер.
Вы задаете желаемый размер своего приобретения как значение свойства объекта FramesPerTrigger
ввода видео. По умолчанию значение этого свойства является 10 кадрами на триггер, но можно задать любое значение. Следующая фигура иллюстрирует приобретение с помощью значения по умолчанию для свойства FramesPerTrigger
. Чтобы видеть пример приобретения, смотрите Получение 100 Кадров.
Определение объема данных, чтобы регистрировать
В то время как можно задать любое приобретение размера, количество кадров, которые можно получить, ограничивается объемом памяти, который вы имеете в наличии в своей системе для устройства хранения данных изображений. Большое приобретение может потенциально заполнить всю доступную системную память. Для больших приобретений вы можете хотеть удалить кадры из буфера, когда они регистрируются. Для получения дополнительной информации смотрите Перемещение Нескольких Кадров в Рабочую область. Чтобы изучить, как освободить буфер памяти, смотрите Память Освобождения.
Несмотря на то, что FramesPerTrigger
задает количество кадров, чтобы получить, эти кадры не должны быть получены непрерывно от видеопотока. Можно указать, что тулбокс пропускает определенное число кадров между кадрами, которые он получает. Для этого установите значение свойства FrameGrabInterval
.
Свойство FrameGrabInterval
управляет интервалом, в котором тулбокс получает кадры от видеопотока (измеренный в кадрах). Это свойство не управляет уровнем, на котором кадры обеспечиваются устройством, в противном случае известным как частоту кадров.
Следующая фигура иллюстрирует, как свойство FrameGrabInterval
влияет на приобретение.
Влияние FrameGrabInterval на регистрации данных
Чтобы определить, сколько кадров было получено объектом ввода видео, проверяйте значение свойства FramesAcquired
. Это свойство говорит, сколько кадров объект получил, поскольку это было запущено. Чтобы определить, сколько кадров в настоящее время доступно в буфере памяти, смотрите Определение, Сколько Кадров Доступно.
Этот пример иллюстрирует, как можно задать объем данных, который будет получен, и определить, сколько данных было получено. (Для примера конфигурирования основанного на времени приобретения смотрите Получение 10 Секунд Данных изображения.)
Создайте объект получения изображений — Этот пример создает объект ввода видео для устройства получения изображений Windows®. Чтобы запустить этот пример в вашей системе, используйте функцию imaqhwinfo
, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.
vid = videoinput('winvideo',1);
Сконфигурируйте свойства — Задают объем данных, который вы хотите получить как количество кадров на триггер. По умолчанию объект ввода видео получает 10 кадров на триггер. В данном примере установите значение этого свойства к 100
.
vid.FramesPerTrigger = 100
Запустите объект получения изображений - — Вызывают функцию start
, чтобы запустить объект получения изображений.
start(vid)
Объект выполняет мгновенный триггер и начинает получать кадры данных. Чтобы проверить, регистрирует ли объект ввода видео данные, используйте функцию islogging
.
islogging(vid) ans = 1
Функция start
возвращает управление в командную строку сразу, но объект продолжает регистрировать данные к буферу памяти. После получения конкретного количества кадров объект прекращает запускать и регистрировать.
Проверяйте, сколько кадров было получено — Чтобы проверить, что конкретное количество кадров было получено, проверяйте значение свойства FramesAcquired
. Обратите внимание на то, что объект постоянно обновляет значение свойства FramesAcquired
, в то время как приобретение прогрессирует. Если вы просматриваете значение этого свойства несколько раз во время приобретения, вы видите, что количество кадров получило увеличение до журналирования остановок.
vid.FramesAcquired ans = 100
Вымойтесь Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.
delete(vid) clear vid
Свойство FramesAcquired
говорит, сколько кадров объект регистрировал, поскольку это было запущено, описано в Определении, Сколько Данных Регистрировалось. Если вы перемещаете кадры от буфера памяти в рабочее пространство MATLAB, количество кадров, сохраненных в буфере памяти, будет отличаться от значения FramesAcquired
. Чтобы определить, сколько кадров в настоящее время доступно в буфере памяти, проверяйте значение свойства FramesAvailable
.
Свойство FramesAvailable
говорит количество кадров в буфере памяти, не в дисковом журнале, если LoggingMode
сконфигурирован к 'disk'
или 'disk&memory'
. Поскольку занимает больше времени записать кадры в дисковый файл, чем к памяти, количество кадров, сохраненных в дисковом журнале, может отстать от сохраненных в буфере памяти. Чтобы видеть, как много кадров доступны в дисковом журнале, смотрят на значение свойства DiskLoggerFrameCount
. Смотрите Данные изображения Журналирования к Диску для получения дополнительной информации.
Этот пример иллюстрирует различие между FramesAcquired
и свойствами FramesAvailable
:
Создайте объект получения изображений — Этот пример создает объект ввода видео для устройства получения изображений Windows. Чтобы запустить этот пример в вашей системе, используйте функцию imaqhwinfo
, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.
vid = videoinput('winvideo',1);
Сконфигурируйте свойства — В данном примере конфигурируют приобретение 15 кадров.
vid.FramesPerTrigger = 15
Запустите объект получения изображений — Вызывают функцию start
, чтобы запустить объект получения изображений.
start(vid)
Объект выполняет мгновенный триггер и начинает получать кадры данных. Функция start
возвращает управление в командную строку сразу, но объект продолжает регистрировать данные к буферу памяти. После журналирования конкретного количества кадров объект прекращает запускаться.
Проверяйте, сколько кадры были получены — Чтобы определить, сколько кадров объект получил и сколько кадров доступно в буфере памяти, проверяйте значение свойств FramesAcquired
и FramesAvailable
.
vid.FramesAcquired ans = 15 vid.FramesAvailable ans = 15
Обновления объекта значение этих свойств постоянно, когда это получает кадры данных. Следующая фигура иллюстрирует, как объект помещает полученные кадры в буфер памяти, в то время как приобретение прогрессирует.
Кадры, доступные после начального триггерного выполнения
Удалите кадры из буфера памяти — Когда вы удаляете кадры из буфера памяти, объект постепенно уменьшает значение свойства FramesAvailable
количеством удаленных кадров.
Чтобы удалить кадры из буфера памяти, вызовите функцию getdata
, задав количество кадров, чтобы получить. Для получения дополнительной информации об использовании getdata
смотрите Данные изображения Обеспечения в рабочее пространство MATLAB.
data = getdata(vid,5);
После того, как вы выполните функцию getdata
, проверяйте значения свойств FramesAcquired
и FramesAvailable
снова. Заметьте, что свойство FramesAcquired
остается неизменным, но объект постепенно уменьшил значение свойства FramesAvailable
количеством кадров, удаленных из буфера памяти.
vid.FramesAcquired ans = 15 vid.FramesAvailable ans = 10
Следующая фигура иллюстрирует содержимое буфера памяти после того, как кадры будут удалены.
Содержимое буфера памяти до и после удаления кадров
Вымойтесь — Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.
delete(vid) clear vid
В некоторых настройках получения изображений вы не можете хотеть регистрировать первые несколько кадров, возвращенных в вашу камеру или другое устройство обработки изображений. Например, некоторые камеры требуют короткого времени прогрева, когда активировано. Качество первых нескольких изображений, возвращенных этими камерами, может быть слишком темным, чтобы быть полезным для вашего приложения.
Чтобы составлять эту характеристику вашей настройки, можно указать, что тулбокс пропускает конкретное количество кадров после того, как триггер выполняется. Вы используете свойство TriggerFrameDelay
задать количество кадров, которые вы хотите пропустить, прежде чем журналирование начинается.
Например, чтобы задать задержку пяти кадров, прежде чем регистрация данных начинается после того, как триггер выполняется, вы установили бы значение свойства TriggerFrameDelay
к 5. Количество полученных кадров задано свойством FramesPerTrigger
и незатронуто задержкой.
vid.TriggerFrameDelay = 5;
Эта фигура иллюстрирует этот сценарий.
При определении задержки, прежде чем начинается регистрация данных
Когда триггер происходит, объект ввода видео получает количество кадров, заданных свойством FramesPerTrigger
, и регистрирует данные к буферу памяти, дисковому файлу или обоим.
Когда это получает конкретное количество кадров, объект ввода видео прекращает запускаться. Чтобы выполнить другой триггер, необходимо перезапустить объект ввода видео. Перезапуск объекта заставляет его удалять все данные, которые это хранило в буфере памяти от предыдущего триггера. Чтобы выполнить несколько триггеров, сохраняя данные из каждого триггера, необходимо задать значение для свойства TriggerRepeat
.
Обратите внимание на то, что свойство TriggerRepeat
задает номер дополнительных времен, которые выполняет триггер. Например, чтобы выполнить триггер три раза, вы установили бы значение свойства TriggerRepeat
к 2
. В следующем vid
является объектом ввода видео, созданным с функцией videoinput
.
vid.TriggerRepeat = 2;
Эта фигура иллюстрирует приобретение с тремя выполнением ручного триггера. В фигуре свойство FramesPerTrigger
установлено в 3.
Выполнение нескольких триггеров