在ros消息中接收sensor_msgs::Image作为数据成员

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

我正在尝试接收包含 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);
}

可能是什么问题?

根据documentation there are two variants of toCvShare from which one需要

A shared_ptr to an object owning the sensor_msgs::Image

the other

A shared_ptr to a sensor_msgs::Image message

你没有提供其中之一。

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

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