Тулбокс предоставляет три способа перенести системы координат из буфера памяти в MATLAB® рабочая область:
Удаление нескольких систем координат из буфера - Чтобы переместить указанное количество систем координат из буфера памяти в рабочую область, используйте getdata
функция. The getdata
функция удаляет системы координат из буфера памяти, когда перемещает их в рабочую область. Функция блокирует командную строку MATLAB до тех пор, пока не будут доступны все запрошенные системы координат или до истечения значения тайм-аута. Для получения дополнительной информации смотрите Перемещение нескольких систем координат в Рабочую область.
Просмотр последних полученных систем координат в буфере - Чтобы принести последние полученные системы координат в буфере памяти в рабочую область, не удаляя их из буфера, используйте peekdata
функция. При возвращении систем координат peekdata
начинается с последнего полученной системы координат и работает назад в буфере памяти. Напротив, getdata
начинается в начале буфера, сначала возвращается самый старый полученная система координат. peekdata
не блокирует командную строку и не гарантирует возврат всех запрашиваемых систем координат. Для получения дополнительной информации смотрите Просмотр систем координат в буфере памяти.
Перенос одной системы координат данных в рабочую область - Для удобства тулбокс предоставляет getsnapshot
функция, которая возвращает одну систему координат данных в рабочее пространство MATLAB. Потому что getsnapshot
функция не требует запуска объекта или запуска захвата, это самый легкий способ перенести данные изображения в рабочую область. getsnapshot
не зависит от буфера памяти; он может вернуть систему координат, даже если буфер памяти пуст, и возвращённая система координат не влияет на значение FramesAvailable
свойство. Для получения дополнительной информации см. Раздел «Перенос одной системы координат в рабочую область». Для примера использования getsnapshot
, см. пример Image Acquisition Toolbox™ Acquiring a Single Image in a Loop в списке 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
функция, чтобы получить конструктор объектов для устройства сбора изображений и заменить этот синтаксис следующим кодом.
vid = videoinput('winvideo',1);
Сконфигурируйте свойства - Чтобы получить 10 секунд данных, определите частоту систем координат вашего устройства сбора изображений и затем умножите частоту систем координат на количество секунд данных, которые вы хотите получить. Продуктом этого умножения является значение FramesPerTrigger
свойство.
В данном примере примите частоту систем координат 30 систем координат в секунду (fps). Умножая 30 на 10, необходимо задать FramesPerTrigger
свойство значению 300.
vid.FramesPerTrigger = 300;
Запустите объект сбора изображений - Вызовите start
функция для запуска объекта сбора изображений.
start(vid)
Объект выполняет немедленный триггер и начинает получение систем координат данных. The start
функция возвращает управление в командную строку немедленно, но объект продолжает регистрировать данные в буфере памяти. После логгирования заданного количества систем координат объект перестает выполняться.
Поместите полученные данные в рабочую область - Чтобы убедиться, что вы получили требуемый объем данных, используйте дополнительный getdata
синтаксис, который возвращает временную метку каждого полученной системы координат. Различие между первой временной меткой и последней временной меткой должна аппроксимировать ожидаемый объем данных.
[data time] = getdata(vid,300); elapsed_time = time(300) - time(1) 10.0467
Очистка - Всегда удаляйте объекты сбора изображений из памяти, и переменные, которые ссылаются на них, когда они вам больше не нужны.
delete(vid) clear vid
Чтобы просмотреть выборку системы координат из буфера памяти, не удаляя их, используйте peekdata
функция.
The peekdata
функция всегда возвращает самые последние полученные системы координат в буфере памяти. Для примера, если вы запрашиваете три системы координат, peekdata
возвращает последний полученную систему координат в буфере во время запроса и две системы координат, которые непосредственно предшествуют нему.
Следующий рисунок иллюстрирует этот процесс. Область команды peekdata(vid,3)
вызывается в три раза (T1, T2 и T3). Затенённые системы координат указывают на системы координат, возвращенные peekdata
при каждом вызове. (peekdata
возвращает системы координат, не удаляя их из буфера памяти.)
Обратите внимание на рисунке, что в T3 только две системы координат стали доступны с момента последнего вызова peekdata
. В этом случае peekdata
возвращает только две системы координат с предупреждением о том, что он вернул меньше данных, чем было запрошено.
Системы координат, возвращенные peekdata
Примечание
The peekdata
функция не возвращает данные во время выполнения, если они находятся в режиме логгирования на диске.
Следующий пример иллюстрирует, как использовать peekdata
:
Создайте объект сбора изображений - Этот пример создает объект входа видео для перевода данных® устройство для сбора изображений. Чтобы запустить этот пример в своей системе, используйте imaqhwinfo
функция, чтобы получить конструктор объектов для устройства сбора изображений и заменить этот синтаксис следующим кодом.
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
функция, чтобы получить конструктор объектов для устройства сбора изображений и заменить этот синтаксис следующим кодом.
vid = videoinput('matrox',1);
Пронесите систему координат в рабочую область - Вызовите getsnapshot
функция для ввода системы координат в рабочую область. Обратите внимание, что вам не нужно запускать объект входа видео перед вызовом getsnapshot
функция.
frame = getsnapshot(vid);
The 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 или откройте demoimaq_GetSnapshot.m файла в редакторе MATLAB.