Инструментарий поддерживает спецификацию областей интересов (ROI) как в программном, так и в аппаратном обеспечении. В следующих разделах содержится дополнительная информация.
При использовании программного ROI пользователь панели инструментов устанавливает размеры ROI в ROIPosition собственность. Устройство возвращает весь кадр изображения. Адаптер задает размеры ROI при создании объекта Frame для упаковки данных изображения.
Пользователи устанавливают значение ROIPosition для указания ROI. Пользователи указывают значение в виде четырехэлементного вектора в форме:
[Xoffset Yoffset Width Height]
Смещения x и y определяют положение ROI относительно верхнего левого угла кадра изображения. Дополнительные сведения об этом свойстве см. в документации по Toolbox™ получения изображений.
Для поддержки окупаемости инвестиций в программное обеспечение ваш адаптер должен проверить значение ROIposition свойство перед созданием объекта-рамки, поскольку при создании рамки необходимо указать размеры ROI. Это обычно делается в openDevice() или startCapture() функции.
В цикл захвата кадра вставьте следующий вызов функции IAdaptor. getROI(). Затем используйте значения ROI width и height при создании IAdaptorFrame вместо полной высоты и ширины изображения, возвращаемых устройством.
Примечание
При создании кадра используются значения ROI width и height, а при копировании данных изображения из буфера в объект-кадр используются значения full image width и height.
Ниже приведена версия 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.
Для реализации аппаратной окупаемости инвестиций необходимо перегрузить оба IAdaptor getROI() и setROI() функции-члены в вашей реализации класса адаптеров. По умолчанию, если IAdaptor объект getROI() функция-член не перегружена, конфигурации ROI будут обрабатываться в программном обеспечении imaqkit::IEngine.