rosWriteImage

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

Описание

msgOut = rosWriteImage(msg,img) преобразует MATLAB® изображение, img, в структуру сообщений и сохраняет совместимые с ROS данные изображения в структуре сообщений, 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 Image Encoding.

Выходы

свернуть все

'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
Для просмотра документации необходимо авторизоваться на сайте