Тулбокс поддерживает спецификацию видимых областей (ROIs) в обоих программных и аппаратных обеспечениях. Следующие разделы предоставляют больше информации.
При использовании программного обеспечения ROI пользователь тулбокса устанавливает размерности ROI в ROIPosition
свойство. Устройство возвращает целый фрейм изображения. Ваш адаптер задает размерности ROI, когда он создает объект Frame группировать данные изображения.
Пользователи устанавливают значение ROIPosition
свойство задать ROI. Пользователи задают значение как четырехэлементный вектор в форме:
[Xoffset Yoffset Width Height]
x-и y-смещения задают положение ROI относительно левого верхнего угла фрейма изображения. Для получения дополнительной информации об этом свойстве, см. документацию Image Acquisition Toolbox™.
Чтобы поддержать программное обеспечение ROI, ваш адаптер должен проверять значение ROIposition
свойство прежде, чем создать систему координат возражает, потому что необходимо задать размерности ROI, когда вы создаете систему координат. Это обычно делается в openDevice()
или startCapture()
функции.
В вашем цикле приобретения системы координат вставьте следующий вызов функции IAdaptor getROI()
. Затем используйте значения ширины и высоты ROI, когда вы создадите IAdaptorFrame
объект, а не высота полного образа и ширина, возвращенная устройством.
Вы используете ширину ROI и высоту, когда вы создаете систему координат, но вы используете ширину полного образа и высоту, когда вы копируете данные изображения с буфера в объект системы координат.
Следующее является версией isSendFrame()
цикл в приобретении распараллеливает функцию, которая проверяет ROI. Обратите внимание на то, что вы вызываете getROI()
функция, чтобы получить значения ROI, и затем использовать значения ширины и высоты в вызове makeFrame()
и смещения от источника в вызове setImage()
.
if (adaptor->isSendFrame()) { // Get ROI information. int roiOriginX, roiOriginY, roiWidth, roiHeight; adaptor->getROI(roiOriginX, roiOriginY, roiWidth, roiHeight); // Get frame type & dimensions imaqkit::frametypes::FRAMETYPE frameType = adaptor->getFrameType(); int imWidth = adaptor->getMaxWidth(); int imHeight = adaptor->getMaxHeight(); // Create a frame object imaqkit::IAdaptorFrame* frame = adaptor->getEngine()->makeFrame(frameType, roiWidth, // ROI width roiHeight); // ROI height // Copy data from buffer into frame object frame->setImage(imBuffer, imWidth, // Full image width imHeight, // Full image height roiOriginX, // ROI origin roiOriginY); // ROI origin // Set image's timestamp frame->setTime(imaqkit::getCurrentTime()); // Send frame object to engine. adaptor->getEngine()->receiveFrame(frame); } // if isSendFrame()
Для аппаратного ROI пользователь задает ROI на устройстве. Устройство возвращает только данные в заданном ROI.
Чтобы реализовать аппаратный ROI, необходимо перегрузить обоих getROI()
IADAPTOR и
setROI()
функции членства в вашей реализации вашего класса адаптера. По умолчанию, если IAdaptor
getROI()
объекта функция членства не перегружается, настройки ROI будут обработаны в программном обеспечении
imaqkit::IEngine
.