Поддержка ROIs

Тулбокс поддерживает спецификацию видимых областей (ROIs) как в программном обеспечении, так и в оборудование. В следующих разделах приведены дополнительные сведения.

Реализация информация только для чтения программного обеспечения

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

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

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

[Xoffset Yoffset Width Height]

Смещения X и Y определяют положение информация только для чтения относительно верхнего левого угла системы координат изображения. Для получения дополнительной информации об этом свойстве см. документацию Image Acquisition Toolbox™.

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

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

В цикл сбора систем координат вставьте следующий вызов функции IAdaptor getROI(). Затем используйте значения ширины и высоты информация только для чтения при создании IAdaptorFrame объект, а не полная высота и ширина изображения, возвращенные устройством.

Примечание

Вы используете ширину и высоту информация только для чтения, когда создаете систему координат, но используете полную ширину и высоту изображения, когда копируете данные изображения из буфера в объект системы координат.

Пример

Ниже приведена версия isSendFrame() цикл в функции потока сбора, которая проверяет информация только для чтения. Обратите внимание, что вы вызываете 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()

Реализация аппаратного информация только для чтения

Для аппаратного информация только для чтения, пользователь задает информация только для чтения на устройстве. Устройство возвращает только данные в заданном информация только для чтения.

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