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