exponenta event banner

rosWriteImage

Запись изображения MATLAB в сообщение изображения ROS

Описание

msgOut = rosWriteImage(msg,img) преобразует изображение MATLAB ® ,img, к структуре сообщения и сохраняет данные изображения, совместимые с АФК, в структуре сообщения, msg. Сообщение должно быть 'sensor_msgs/Image' сообщение. 'sensor_msgs/CompressedImage' сообщения не поддерживаются. Функция не выполняет преобразование цветового пространства, поэтому img ввод должен иметь кодировку, указанную в свойстве Encoding сообщения.

msgOut = rosWriteImage(msg,img,alpha) преобразует изображение MATLAB, img, к структуре сообщений. Если кодировка изображения поддерживает альфа-канал (rgba или bgra ), укажите этот альфа-канал в alpha. Альтернативно, входное изображение может хранить альфа-канал как его четвертый канал.

msgOut = rosWriteImage(___,"Encoding",encodingParam) задает кодировку сообщения изображения в качестве аргумента «имя-значение» с использованием любого из предыдущих входных аргументов. Если Encoding поле сообщения не установлено, используйте этот синтаксис для установки поля.

Входные аргументы

свернуть все

'sensor_msgs/Image' Сообщение изображения ROS, указанное как Image структура.

Изображение, указанное как матрица, представляющая изображение в градациях серого или RGB, или как массив m-by-n-by-3, в зависимости от изображения датчика.

Альфа-канал, указанный как uint8 изображение в градациях серого. Альфа должен быть того же размера и типа данных, что и img.

Кодировка сообщения изображения, заданного как строковый скаляр. Использование этого входного аргумента перезаписывает Encoding поле входа msg. Дополнительные сведения см. в разделе Кодирование изображений ROS.

Продукция

свернуть все

'sensor_msgs/Image' Сообщение изображения ROS, указанное как Image структура. 'sensor_msgs/Image' сообщения изображения не поддерживаются.

Для непосредственного назначения существующему сообщению можно использовать одну и ту же переменную для входного и выходного аргумента.

img = uint8(10*rand(128,128,3));
msg = rosmessage("sensor_msgs/Image","DataFormat","struct");
msg = rosWriteImage(msg,img,"Encoding","rgb8");

Совет

Необходимо указать правильную кодировку входного изображения в свойстве Encoding сообщения изображения. Если кодировка изображения не указана перед вызовом функции, кодировка по умолчанию, rgb8, используется (3-канальное изображение RGB со значениями uint8). Функция не выполняет преобразование цветового пространства, поэтому img ввод должен иметь кодировку, указанную в свойстве Encoding сообщения.

Все типы кодирования, поддерживаемые для rosReadImage также поддерживаются в этой функции. Дополнительные сведения о поддерживаемых типах кодирования и их представлениях в MATLAB см. в разделе rosReadImage.

Изображения, закодированные Байером (bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8, и их 16-битные эквиваленты) должны быть заданы как 8-битные или 16-битные одноканальные изображения, иначе они не кодируются.

Расширенные возможности

.

См. также

|

Представлен в R2021a