当前位置:   article > 正文

使用ROS进行图片传输_ros传输图片代码

ros传输图片代码

版本控制:QT5.9.5   ROS-melodic  Ubuntu18.04

前置工作:

对QT的配置文件进行修改,使其在启动时导入ros库的内容。

首先,打开终端,在终端输入指令,进入文件进行编辑。

sudo gedit /usr/share/applications/QtProject-qtcreator-ros-latest.desktop

打开后文件:

在Exec = 后加入bash -i -c ,改为

Exec=bash -i -c /home/QtCreator/latest/bin/qtcreator-ros

之后导入opencv库和ros库正常进行程序编写即可。

  1. #include <image_transport/image_transport.h>
  2. #include <opencv2/highgui/highgui.hpp>
  3. #include <cv_bridge/cv_bridge.h>

ROS通信主要通过sensor_msgs类型来发送图片内容,并通过opencv库中的imshow函数来进行图像的展示。

在发布过程中,首先通过opencv库读取指定路径图片信息,存储为cv::Mat格式,之后通过cv_bridge来对图片信息进行转换,将其转换为ros的消息类型。

  1. ros::init(argc, argv, "image_publisher");
  2. ros::NodeHandle nh;
  3. image_transport::ImageTransport it(nh);
  4. image_transport::Publisher pub = it.advertise("camera/image", 1); // publish topic
  5. cv::Mat image = cv::imread("/home/qtros/test/img/img.png");
  6. // cv::imshow("demo",image);
  7. sensor_msgs::ImagePtr msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", image).toImageMsg();

注意,与通常消息的发布者不同的是,图片发布需要在生成节点后,根据节点生成ImageTransport类型的对象,将发布者挂载到ImageTransport类型的对象上面。

常见问题:

  1. OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/highgui/src/window.cpp, line 304
  2. terminate called after throwing an instance of ‘cv::Exception
  3. what(): /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/highgui/src/window.cpp:304: error: (-215) size.width>0 && size.height>0 in function imshow

建议通过终端输入pwd指令,确认自己输入的绝对路径是否正确。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/845614
推荐阅读
相关标签
  

闽ICP备14008679号