接收sensor_msgs::将图像作为ros消息中的数据成员

Receiving sensor_msgs::Image as data member in a ros message

本文关键字:消息 ros 数据成员 图像 sensor msgs 接收      更新时间:2023-10-16

我正在尝试接收一个数据结构,该数据结构包含sensor_msgs::Image作为我在frame.msg 中声明的数据成员

std_msgs/Header header
sensor_msgs/Image color
geometry_msgs/Vector3 translation

但是,下面的回调函数给出的编译错误为"对'toCvShare(const_color_type&,const-char[5])的调用没有匹配的函数"

void frameCallback( frame_info::frameConstPtr& msg)
{
    cv::imshow("UserInterface", cv_bridge::toCvShare(msg->color, "bgr8")->image);
    cv::waitKey(1);
}

可能是什么问题?

根据文档,toCvShare有两种变体,需要

对拥有sensor_msgs::Image 的对象的shared_ptr

和另一个

传感器的shared_ptr _msgs::图像消息

你既不提供,也不提供。

在您的情况下,第一个选项应该有效,它期望图像作为第一个参数,并期望拥有图像的对象(即msg)的shared_ptr作为第二个参数:

cv_bridge::toCvShare(msg->color, msg, "bgr8")