В следующих подразделах описывается, как управлять различными аспектами логгирования данных.
Установка режима регистрации
Определение количества систем координат, записанных в журнал с момента запуска объекта
Определение количества систем координат, доступных в буфере памяти
Задержка регистрации данных после выполнения триггера
Установка нескольких триггерных исполнений
Использование объекта входа видео LoggingMode
свойство можно управлять, где тулбокс регистрирует полученные системы координат данных.
Значение по умолчанию для LoggingMode
свойство 'memory'
. В этом режиме тулбокс регистрирует данные в буфере в памяти. Если вы хотите принести данные изображения в MATLAB® рабочая область, необходимо логгировать системы координат в память. Функции, предоставляемые тулбоксом для перемещения данных в рабочую область, все работают с буфером памяти. Для получения дополнительной информации см. раздел «Перенос данных изображений в рабочее пространство MATLAB».
Можно также записать данные в файл диска, установив LoggingMode
свойство к 'disk'
или к 'disk&memory'
. Регистрируя системы координат в файле диска, вы создаете постоянную запись о системах координат, которую вы получаете. Для примера этот код устанавливает значение LoggingMode
свойство объекта входа видео vid
на 'disk&memory'
.
vid.LoggingMode = 'disk&memory';
Поскольку тулбокс хранит системы координат изображения в формате Audio Video Interleaved (AVI), можно просмотреть записанные системы координат в любом стандартном медиаплеере. Дополнительные сведения см. в разделе Регистрация данных на диске.
Примечание
Чтобы получить список опций, которые можно использовать для функции, нажмите клавишу Tab после ввода функции в командной строке MATLAB. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой расширенной функции заполнения клавишей Tab, смотрите Использование заполнения клавишей Tab для функций.
В программном обеспечении Image Acquisition Toolbox™ в качестве количества систем координат на триггер указывается объем данных, которые необходимо получить.
Вы задаете желаемый размер вашего приобретения как значение объекта входа видео FramesPerTrigger
свойство. По умолчанию значение этого свойства составляет 10 системы координат на триггер, но можно задать любое значение. Следующий рисунок иллюстрирует приобретение, используя значение по умолчанию для FramesPerTrigger
свойство. Чтобы увидеть пример приобретения, смотрите Приобретение 100 систем координат.
Определение объема данных для регистрации
Примечание
В то время как вы можете задать сбор любого размера, количество систем координат, которые вы можете получить, ограничено объемом памяти, доступной в вашей системе для хранения изображений. Большое приобретение потенциально может заполнить всю доступную системную память. Для больших приобретений можно хотеть удалить системы координат из буфера по мере их регистрации. Для получения дополнительной информации смотрите Перемещение нескольких систем координат в Рабочую область. Чтобы узнать, как очистить буфер памяти, смотрите Освобождение памяти.
Хотя FramesPerTrigger
определяет количество систем координат, которые нужно получить, эти системы координат не должны быть извлечены непрерывно из видеопотока. Можно задать, что тулбокс пропускает определенное количество систем координат между системами координат, которые он получает. Для этого установите значение FrameGrabInterval
свойство.
Примечание
The FrameGrabInterval
свойство управляет интервалом, в котором тулбокс получает системы координат из видеопотока (измеряется в системах координат). Это свойство не управляет частотой, с которой системы координат предоставляются устройством, иначе известной как частота систем координат.
Следующий рисунок иллюстрирует, как FrameGrabInterval
свойство влияет на приобретение.
Влияние FrameGrabInterval на логгирование данных
Чтобы определить, сколько систем координат было получаемы объектом входа видео, проверьте значение FramesAcquired
свойство. Это свойство указывает, сколько систем координат объект получил с момента его запуска. Чтобы определить, сколько систем координат в данный момент доступны в буфере памяти, смотрите Определение, Сколько систем координат доступно.
Этот пример иллюстрирует, как можно задать объем данных, которые будут получены, и определить, сколько данных было получено. (Пример настройки сбора данных на основе времени см. в разделе Получение 10 секунд данных изображения.)
Создайте объект сбора изображений - Этот пример создает объект входа видео для Windows® устройство для сбора изображений. Чтобы запустить этот пример в своей системе, используйте imaqhwinfo
функция, чтобы получить конструктор объектов для устройства сбора изображений и заменить этот синтаксис следующим кодом.
vid = videoinput('winvideo',1);
Сконфигурируйте свойства - Укажите объем данных, которые вы хотите получить, как количество систем координат на триггер. По умолчанию объект входа видео получает 10 системы координат на триггер. В данном примере установите значение этого свойства равным 100
.
vid.FramesPerTrigger = 100
Запустите объект сбора изображений - - Вызовите start
функция для запуска объекта сбора изображений.
start(vid)
Объект выполняет немедленный триггер и начинает получение систем координат данных. Чтобы проверить, регистрирует ли объект входа видео данные, используйте islogging
функция.
islogging(vid) ans = 1
The start
функция возвращает управление в командную строку немедленно, но объект продолжает регистрировать данные в буфере памяти. После получения заданного количества систем координат объект перестает запускаться и регистрироваться.
Проверьте, сколько систем координат было получаемы - Чтобы убедиться, что заданное количество систем координат было получено, проверьте значение FramesAcquired
свойство. Обратите внимание, что объект постоянно обновляет значение FramesAcquired
свойство по мере прогрессирования приобретения. Если вы просматриваете значение этого свойства несколько раз во время приобретения, можно увидеть, как количество полученных систем координат увеличивается, пока логгирование не остановится.
vid.FramesAcquired ans = 100
Очистка Всегда удаляйте объекты сбора изображений из памяти и переменные, которые ссылаются на них, когда они вам больше не нужны.
delete(vid) clear vid
The FramesAcquired
свойство указывает, сколько систем координат объект записал в журнал с момента его запуска, описанное в разделе «Определение объема записанных данных». Если вы перемещаете системы координат из буфера памяти в рабочее пространство MATLAB, количество систем координат, хранящихся в буфере памяти, будет отличаться от FramesAcquired
значение. Чтобы определить, сколько систем координат в данный момент доступны в буфере памяти, проверьте значение FramesAvailable
свойство.
Примечание
The FramesAvailable
свойство указывает количество систем координат в буфере памяти, а не в журнале дисков, если LoggingMode
настроен на 'disk'
или 'disk&memory'
. Поскольку запись систем координат в файл диска занимает больше времени, чем в память, количество систем координат, хранящихся в журнале диска, может отставать от хранимых в буфере памяти. Чтобы увидеть, сколько систем координат доступно в журнале дисков, смотрите на значение DiskLoggerFrameCount
свойство. Дополнительные сведения см. в разделе Регистрация данных на диске.
Этот пример иллюстрирует различие между FramesAcquired
и FramesAvailable
свойства:
Создайте объект сбора изображений - Этот пример создает объект входа видео для устройства сбора изображений Windows. Чтобы запустить этот пример в своей системе, используйте imaqhwinfo
функция, чтобы получить конструктор объектов для устройства сбора изображений и заменить этот синтаксис следующим кодом.
vid = videoinput('winvideo',1);
Сконфигурируйте свойства - Для этого примера сконфигурируйте сбор 15 систем координат.
vid.FramesPerTrigger = 15
Запустите объект сбора изображений - Вызовите start
функция для запуска объекта сбора изображений.
start(vid)
Объект выполняет немедленный триггер и начинает получение систем координат данных. The start
функция возвращает управление в командную строку немедленно, но объект продолжает регистрировать данные в буфере памяти. После логгирования заданного количества систем координат объект перестает выполняться.
Проверьте, сколько систем координат было получаемы - Чтобы определить, сколько систем координат объект получил и сколько системы координат доступно в буфере памяти, проверьте значение FramesAcquired
и FramesAvailable
свойства.
vid.FramesAcquired ans = 15 vid.FramesAvailable ans = 15
Объект постоянно обновляет значение этих свойств, когда получает системы координат данных. Следующий рисунок иллюстрирует, как объект помещает полученные системы координат в буфер памяти по мере прогрессирования захвата.
Системы координат, доступные после начального выполнения триггера
Удалите системы координат из буфера памяти - Когда вы удаляете системы координат из буфера памяти, объект уменьшает значение FramesAvailable
свойство по количеству удаленных систем координат.
Чтобы удалить системы координат из буфера памяти, вызовите getdata
функция, задающая количество систем координат, которые нужно извлечь. Для получения дополнительной информации об использовании getdata
, см. «Перенос данных в рабочее пространство MATLAB».
data = getdata(vid,5);
После выполнения getdata
function, проверяйте значения 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.
Выполнение нескольких триггеров