exponenta event banner

Поддержка окупаемости инвестиций

Инструментарий поддерживает спецификацию областей интересов (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.