image - ROS ImagePtr 和图像编译混淆

标签 image compilation ros

我正在尝试创建一个发布包含两个图像的自定义消息。这是自定义消息文件:

Header header
sensor_msgs/Image leftimage
sensor_msgs/Image rightimage

这是我尝试使用自定义消息通过 ROS 发布来自立体相机的图像的文件:

sensor_msgs::ImagePtr leftmsg;
sensor_msgs::ImagePtr rightmsg;
leftmsg = cv_bridge::CvImage(std_msgs::Header(), "mono8", leftframe).toImageMsg();
rightmsg = cv_bridge::CvImage(std_msgs::Header(), "mono8", rightframe).toImageMsg();
stereo.leftimage = leftmsg;
stereo.rightimage = rightmsg;
stereo_pub.publish(stereo);

但是,当我 catkin_make 时,我收到以下编译错误:

    error: no match for ‘operator=’ (operand types are ‘duo_cam::Stereo_<std::allocator<void> >::_leftimage_type {aka sensor_msgs::Image_<std::allocator<void> >}’ and ‘sensor_msgs::ImagePtr {aka boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > >}’)
            stereo.leftimage = leftmsg;
                             ^
    note: candidate is:
    In file included from /opt/ros/indigo/include/image_transport/publisher.h:39:0,
             from /opt/ros/indigo/include/image_transport/image_transport.h:38,
    sensor_msgs::Image_<std::allocator<void> >& sensor_msgs::Image_<std::allocator<void> >::operator=(const sensor_msgs::Image_<std::allocator<void> >&)
     struct Image_
            ^

我该如何纠正这个问题?我已经在使用 toImageMsg() 函数,我在网上看到该函数将 ImagePtr 转换为图像,所以不确定出了什么问题。

最佳答案

根据the documentation toImageMsg 的签名是

sensor_msgs::ImagePtr toImageMsg() const;

也就是说,它ImagePtr转换为Image(CvImage用于将OpenCV图像转换为ROS 图像)。这也可以通过将 leftmsgrightmsg 声明为 ImagePtr 来看出;如果 toImageMsg 将返回 Image,则这将不起作用。

要获取 ImagePtrImage,只需取消引用指针即可。以下内容应该有效:

stereo.leftimage = *leftmsg;
stereo.rightimage = *rightmsg;

关于image - ROS ImagePtr 和图像编译混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31619475/

相关文章:

image - 如何使用 swift 在使用贝塞尔路径开发的形状上添加文本或图像

Xcode 编译 swift 代码太慢,因为它编译了两次

javascript - 在angularjs中上传多张图片时删除所选图片

Android ImageReader 获取 NV21 格式?

java - 将 Java 源代码编译到另一个目录

qt - 如何使 Qt 静态构建在不安装 vc_redist.x64.exe 的情况下运行

c++ - 启动时在 ros2 中找不到共享运行时库

python - 如何修复 "[rospack] Error: package ' 未找到 my_package'

java - 订阅远程 rospy 发布者

html - 文本与图像垂直居中