zoukankan      html  css  js  c++  java
  • 【ROS学习之rviz】在rviz中显示图片

    思路: 
    (1)使用opencv读取本地图像 
    (2)调用cv_bridge::CvImage().toImageMsg()将本地图像发送给rviz显示

    1.使用opencv读取本地图像并发布图像消息
    (1)利用catkin新建一个工程叫rosopencv,并进行初始化

    mkdir -p rosopencv/src
    cd rosopencv/src
    catkin_create_pkg rosopencv sensor_msgs cv_bridge roscpp std_msgs image_transport
    cd ..
    catkin_make
    source ./devel/setup.bash


    (2)编辑主函数代码

    在rosopencv包文件夹src目录下创建rosopencv.cpp

    主函数rosopencv.cpp内容如下

        #include <ros/ros.h>
        #include <image_transport/image_transport.h>
        #include <opencv2/highgui/highgui.hpp>
        #include <cv_bridge/cv_bridge.h>
         
        #include <stdio.h>
         
        int main(int argc, char** argv)
        {
          ros::init(argc, argv, "image_publisher");
          ros::NodeHandle nh;
          image_transport::ImageTransport it(nh);
          image_transport::Publisher pub = it.advertise("camera/image", 1);
         
          cv::Mat image = cv::imread("~/rosopencv/test.jpg", CV_LOAD_IMAGE_COLOR);
          if(image.empty()){
           printf("open error
    ");
           }
          sensor_msgs::ImagePtr msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", image).toImageMsg();
         
          ros::Rate loop_rate(5);
          while (nh.ok()) {
            pub.publish(msg);
            ros::spinOnce();
            loop_rate.sleep();
          }
        }



    (3)编辑CmakeLists.txt 

    cmake_minimum_required(VERSION 3.0.2)
    project(rosopencv)
    
    find_package(catkin REQUIRED COMPONENTS
      cv_bridge
      image_transport
      roscpp
      sensor_msgs
      std_msgs
    )
    
    catkin_package(
      INCLUDE_DIRS include
    #  LIBRARIES rosopencv
      CATKIN_DEPENDS cv_bridge image_transport roscpp sensor_msgs std_msgs
    #  DEPENDS system_lib
    )
    
    
    include_directories(
      include
      ${catkin_INCLUDE_DIRS}
    )
    
    add_executable(${PROJECT_NAME}_node src/rosopencv.cpp)
    

    target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES} )


    2编译和运行


    编译

    1. cd ~/rosopencv
    2. catkin_make



    打开一个终端运行 roscore

    另外一个终端工作空间运行

     source devel/setup.bash 

    rosrun rosopencv rosopencv_node 

    3.在rviz 中显示

    rviz


    左边点击add 
    选中image 
    在image的topic选项中选 
    /camera/image

    即可显示图片

    Talk is cheap, show me the code
  • 相关阅读:
    什么是索引?怎么创建索引?索引的使用原则?
    Cookie和Session的区别
    HashMap、Hashtable、ConcurrentHashMap的原理与区别
    vxlogcfg vxlogcfg – 修改统一日志记录配置设置
    磁盘阵列RAID介绍及计算公式
    二叉树的最近公共祖先 递归
    LRU 缓存机制
    从前序与中序遍历序列构造二叉树 递归
    MySQL 数据结构常用命令
    Node.Js 搭建简单的 EggJs 示例项目
  • 原文地址:https://www.cnblogs.com/birdBull/p/14853629.html
Copyright © 2011-2022 走看看