Поддержка КОРОЛЕЙ

Тулбокс поддерживает спецификацию видимых областей (КОРОЛИ) в обоих программных и аппаратных обеспечениях. Следующие разделы предоставляют больше информации.

Реализация ROI программного обеспечения

При использовании программного обеспечения ROI пользователь тулбокса устанавливает размерности ROI в свойстве ROIPosition. Устройство возвращает целый фрейм изображения. Ваш адаптер задает размерности ROI, когда он создает объект Frame группировать данные изображения.

Пользовательский сценарий

Пользователи устанавливают значение свойства ROIPosition задать ROI. Пользователи задают значение как четырехэлементный вектор в форме:

[Xoffset Yoffset Width Height]

x-и y-смещения задают положение ROI относительно левого верхнего угла фрейма изображения. Для получения дополнительной информации об этом свойстве, см. документацию Image Acquisition Toolbox™.

Предложенный алгоритм

Чтобы поддержать программное обеспечение ROI, ваш адаптер должен проверять значение свойства ROIposition прежде, чем создать объект кадра, потому что необходимо задать размерности ROI, когда вы создаете кадр. Это обычно делается в функциях startCapture() или openDevice().

В вашем цикле приобретения кадра вставьте следующий вызов функции 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.

Чтобы реализовать аппаратный ROI, необходимо перегрузить и getROI() IADAPTOR и функции членства setROI() в реализации класса адаптера. По умолчанию, если объект IAdaptor, функция членства getROI() не перегружается, настройки ROI, будет обработан в программном обеспечении imaqkit::IEngine.