【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\n");
       }
      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

即可顯示圖片

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM