Тулбокс обеспечивает три способа переместить системы координат от буфера памяти в MATLAB® рабочая область:
При удалении нескольких систем координат из буфера — Чтобы переместить конкретное количество систем координат от буфера памяти в рабочую область, используйте getdata
функция. getdata
функция удаляет системы координат из буфера памяти, когда это перемещает их в рабочую область. Функциональные блоки командная строка MATLAB до всех требуемых систем координат доступна, или до значения тайм-аута, истекают. Для получения дополнительной информации смотрите Перемещение Нескольких Систем координат в Рабочую область.
При просмотре последний раз полученных систем координат в буфере — Чтобы принести последний раз полученные системы координат в буфере памяти в рабочую область, не удаляя их из буфера, используйте peekdata
функция. При возврате систем координат, peekdata
запускается с последний раз полученной системы координат и работает назад в буфере памяти. В отличие от этого getdata
запускается в начале буфера, возвращая самую старую полученную систему координат сначала. peekdata
не блокирует командную строку и, как гарантируют, не возвратит все системы координат, которые вы запрашиваете. Для получения дополнительной информации смотрите Системы координат Просмотра в Буфере памяти.
Принося одну систему координат данных в рабочую область — Как удобство, тулбокс обеспечивает getsnapshot
функция, которая возвращает одну систему координат данных в рабочее пространство MATLAB. Поскольку getsnapshot
функция не требует запуска объекта или инициирования захвата, это - самый легкий способ принести данные изображения в рабочую область. getsnapshot
независимо от буфера памяти; это может возвратить систему координат, даже если буфер памяти пуст, и возвращенная система координат не влияет на значение FramesAvailable
свойство. Для получения дополнительной информации смотрите Обеспечение Одной Системы координат в Рабочую область. Для примера использования getsnapshot
, смотрите, что пример Image Acquisition Toolbox™ Получает Одно Изображение в Цикле в списке Examples наверху Image Acquisition Toolbox основная страница Documentation Center или откройте файл demoimaq_GetSnapshot.m в редакторе MATLAB.
Чтобы переместить несколько систем координат данных из буфера памяти в рабочее пространство MATLAB, используйте getdata
функция. По умолчанию, getdata
получает количество кадров, заданное в FramesPerTrigger
свойство, но можно задать любой номер. Смотрите getdata
страница с описанием для полной информации об этой функции.
Примечание
Когда getdata
функционируйте системы координат перемещений от буфера памяти в рабочую область, он удаляет системы координат из буфера памяти.
В этом рисунке, getdata
заходится T1 с запросом о 15 системах координат, но только шесть систем координат доступны в буфере памяти. getdata
блоки до конкретного количества систем координат становятся доступными, в T2, в который точка getdata
перемещает системы координат в рабочее пространство MATLAB и возвращает управление в командную строку.
Блоки getdata До Систем координат Становятся Доступными
В этом примере показано, как можно сконфигурировать аппроксимированный основанный на времени захват с помощью FramesPerTrigger
свойство:
Создайте объект получения изображений — Этот пример создает объект ввода видео для Windows® устройство получения изображений. Чтобы запустить этот пример в вашей системе, используйте imaqhwinfo
функция, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.
vid = videoinput('winvideo',1);
Сконфигурируйте свойства — Чтобы получить 10 секунд данных, определить частоту кадров вашего устройства получения изображений и затем умножить частоту кадров на номер секунд данных, которые вы хотите получить. Продуктом этого умножения является значение FramesPerTrigger
свойство.
В данном примере примите частоту кадров 30 кадров в секунду (фут в секунду). Умножаясь 30 10, необходимо установить FramesPerTrigger
свойство к значению 300.
vid.FramesPerTrigger = 300;
Запустите объект получения изображений — Вызов start
функционируйте, чтобы запустить объект получения изображений.
start(vid)
Объект выполняет мгновенный триггер и начинает получать системы координат данных. start
функция возвращает управление в командную строку сразу, но объект продолжает регистрировать данные к буферу памяти. После логгирования конкретного количества систем координат объект прекращает запускаться.
Принесите полученные данные в рабочую область — Чтобы проверить, что вы получили объем данных, который вы хотели, используйте дополнительный getdata
синтаксис, который возвращает метку времени каждой полученной системы координат. Различие между первой меткой времени и последней меткой времени должно аппроксимировать объем данных, который вы ожидали.
[data time] = getdata(vid,300); elapsed_time = time(300) - time(1) 10.0467
Вымойтесь — Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.
delete(vid) clear vid
Чтобы просмотреть демонстрационные системы координат от буфера памяти, не удаляя их, используйте peekdata
функция.
peekdata
функционируйте всегда возвращает последний раз полученные системы координат в буфере памяти. Например, если вы запрашиваете три системы координат, peekdata
возвращает последний раз полученную систему координат в буфере во время запроса и две системы координат, которые сразу предшествуют ему.
Следующая фигура иллюстрирует этот процесс. Команда peekdata(vid,3)
называется в три различных раза (T1, T2 и T3). Теневые системы координат указывают на системы координат, возвращенные peekdata
в каждом вызове. (peekdata
возвращает системы координат, не удаляя их из буфера памяти.)
Обратите внимание на рисунке, что в T3 только две системы координат стали доступными начиная с последней возможности к peekdata
. В этом случае, peekdata
возвращает только две системы координат, с предупреждением, что это возвратило меньше данных, чем требовалось.
Системы координат Возвращены peekdata
Примечание
peekdata
функция не возвращает данных при выполнении если в дисковом режиме логгирования.
Следующий пример иллюстрирует, как использовать peekdata
:
Создайте объект получения изображений — Этот пример создает объект ввода видео для Перевода Данных® устройство получения изображений. Чтобы запустить этот пример в вашей системе, используйте imaqhwinfo
функция, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.
vid = videoinput('dt',1);
Сконфигурируйте свойства — В данном примере конфигурируют ручной триггер. Необходимо использовать triggerconfig
функция, чтобы задать триггерный тип.
triggerconfig(vid,'manual')
Кроме того, сконфигурируйте достаточно большой захват, чтобы позволить несколько вызовов peekdata
прежде чем это закончится.
vid.FramesPerTrigger = 300;
Запустите объект получения изображений — Вызов start
функционируйте, чтобы запустить объект получения изображений.
start(vid)
Видео объект теперь запускает, но не регистрирует.
isrunning(vid) ans = 1 islogging(vid) ans = 0
Используйте peekdata, чтобы просмотреть системы координат перед триггером — Если вы вызываете peekdata
прежде чем вы инициируете захват, peekdata
может только возвратить одну систему координат данных, потому что регистрация данных не инициировалась, и буфер памяти пуст. Если больше чем одну систему координат требуют, peekdata
выдает предупреждение, что оно возвращает меньше, чем требуемое количество кадров.
pdata = peekdata(vid,50); Warning: PEEKDATA could not return all the frames requested.
Проверьте тот peekdata
возвращенный одна система координат. Одна система координат данных должна иметь ту же ширину и высоту, как задано ROIPosition
свойство и то же количество полос, как задано NumberOfBands
свойство. В этом примере формат видео данных является RGB так значение NumberOfBands
свойство равняется 3.
whos Name Size Bytes Class pdata 96x128x3 36864 uint8 array vid 1x1 1060 videoinput object
Проверьте, что объект не получил систем координат.
vid.FramesAcquired ans = 0
Инициируйте захват — Вызов trigger
функционируйте, чтобы инициировать захват.
trigger(vid)
Объект начинает регистрировать системы координат к буферу памяти.
Просмотрите последний раз полученные системы координат — В то время как захват происходит, вызовите peekdata
несколько раз просматривать последние системы координат в буфере памяти. В зависимости от количества кадров вы запрашиваете, и синхронизация этих запросов, peekdata
может возвратить меньше, чем количество кадров, которое вы задаете.
pdata = peekdata(vid,50);
Проверять тот peekdata
возвращенный системы координат, которые вы запросили, проверяют размерности pdata
. peekdata
возвращает четырехмерный массив систем координат, где последняя размерность указывает на возвращенное количество кадров.
whos Name Size Bytes Class pdata 4-D 1843200 uint8 array vid 1x1 1060 videoinput object size(pdata) ans = 96 128 3 50
Вымойтесь — Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.
delete(vid) clear vid
Чтобы принести одну систему координат данных изображения в рабочее пространство MATLAB, используйте getsnapshot
функция. Можно вызвать getsnapshot
функционируйте в любое время после создания объекта.
Этот пример иллюстрирует, как простой это должно использовать getsnapshot
функция.
Создайте объект получения изображений — Этот пример создает объект ввода видео для Matrox® устройство. Чтобы запустить этот пример в вашей системе, используйте imaqhwinfo
функция, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.
vid = videoinput('matrox',1);
Принесите систему координат в рабочую область — Вызов getsnapshot
функция, чтобы принести систему координат в рабочую область. Обратите внимание на то, что вы не должны запускать объект ввода видео прежде, чем вызвать getsnapshot
функция.
frame = getsnapshot(vid);
getsnapshot
функция возвращает изображение той же ширины и высоты, как задано ROIPosition
свойство и то же количество полос, как задано NumberOfBands
свойство. В этом примере формат видео данных является RGB так значение NumberOfBands
свойство равняется 3.
whos Name Size Bytes Class frame 96x128x3 36864 uint8 array vid 1x1 1060 videoinput object
Обратите внимание на то, что система координат, возвращенная getsnapshot
не удален из буфера памяти, если системы координат хранятся там, и не влияет на значение FramesAvailable
свойство.
Вымойтесь — Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.
delete(vid) clear vid
Для примера использования getsnapshot
, смотрите, что пример Image Acquisition Toolbox Получает Одно Изображение в Цикле в списке Examples наверху Image Acquisition Toolbox основная страница Documentation Center или откройте файл demoimaq_GetSnapshot.m в редакторе MATLAB.