在ROS中使用opencv-查看图片

9 篇文章 0 订阅

参考http://www.cnblogs.com/steven-blog/archive/2013/05/12/3074518.html

吐槽一下,好多步骤,- -,打开一张图片都这么繁琐,好气啊,不过学生时代玩一玩无所谓,开心就好,熟悉一下ROS这个工具

运行效果:

1、创建工作空间

 $ mkdir -p ros_opencv/src
 $ cd ros_opencv/src
 $ catkin_init_workspace

2、进入src目录,创建opencv_test包

 $ catkin_create_pkg opencv_test sensor_msgs opencv2 cv_bridge roscpp std_msgs image_transport

3、修改opencv_test目录下的CMakeLists.txt

cmake_minimum_required(VERSION 2.8.3)
project(opencv_test)

## Find catkin macros and libraries

find_package(catkin  REQUIRED COMPONENTS cv_bridge image_transport  roscpp sensor_msgs std_msgs)
find_package(OpenCV REQUIRED)

## Declare a catkin package
catkin_package()

## Include directories,
## Add target and link libraries

include_directories(include ${OpenCV_INCLUDE_DIRS})
include_directories(include ${catkin_INCLUDE_DIRS})

add_executable(opencv_test_node src/opencv_test_node.cpp)
target_link_libraries(opencv_test_node ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})
add_dependencies(opencv_test_node opencv_test_gencpp)

4、在opencv_test\src目录下创建opencv_test_node.cpp

#include <ros/ros.h>
#include <stdio.h>
#include <image_transport/image_transport.h>
#include <cv_bridge/cv_bridge.h>
#include <sensor_msgs/image_encodings.h>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

static const char WINDOW[] = "Image window";
static void help()
{
    printf("\nThis program demonstrates converting OpenCV Image to ROS Image messages  \n"
        );

}

int main(int argc, char** argv)
{
  help();
  ros::init(argc, argv, "image_converter");

  //Reading an image from the file
  cv::Mat cv_image = cv::imread("/home/cheng/1.jpg");
  if(cv_image.empty() )
    {
        ROS_ERROR("Read the picture failed!");
        return -1;
    }

  //Convert OpenCV image to ROS message
  ros::NodeHandle node;
  image_transport::ImageTransport transport(node);
  image_transport::Publisher image_pub; 
  image_pub=transport.advertise("OutImage", 1);
  ros::Time time=ros::Time::now(); 

  cv_bridge::CvImage cvi;
  cvi.header.stamp = time;
  cvi.header.frame_id = "image";
  cvi.encoding = "bgr8";
  cvi.image = cv_image;

  sensor_msgs::Image im;
  cvi.toImageMsg(im);
  image_pub.publish(im);
  ROS_INFO("Converted Successfully!");

  //Show the image
  cv::namedWindow(WINDOW);
  cv::imshow(WINDOW,cv_image);
  cv::waitKey(0);

  ros::spin();
  return 0;
}

5、编译

$ cd ros_opencv
$ catkin_make

6、运行

$ roscore
$ source devel/setup.bash
$ rosrun opencv_test opencv_test_node

 

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值