Ubuntu ROS Opencv 验证

Ubuntu ROS Opencv 验证

为验证我的系统是否能支持ROS用Opencv,做以下内容:

  1. 创建工作空间
mkdir ros_opencv/src -p
  1. 初始化工作空间
cd ros_opencv/src
catkin_init_workspace
  1. 创建opencv_test功能包
 catkin_create_pkg opencv_test sensor_msgs cv_bridge roscpp std_msgs image_transport
  1. 编写程序opencv_test_node.cpp
vim 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
  // ubuntu 是我自己的用户名,需要根据自己的实际用户名修改,不然找不到文件
  cv::Mat cv_image = 
  cv::imread("/home/ubuntu/ros_opencv/src/opencv_test/imag/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;
}

  1. 修改CMakeLists.txt文件
vim CMakeListx.txt

在find_package( )前添加:

set(OpenCV_DIR /usr/share/OpenCV/)

tips: 这里是设置opencv路径,需要根据自己系统路径修改

在文件最后添加:

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_gen.cpp)
  1. 添加图片
mkdir image

将这张图片保存到image文件夹中,并修改文件名为:1.jpg
在这里插入图片描述

  1. 编译 加载工作空间
cd ~/ros_opencv
catkin_make
sudo echo "~/ros_opencv/devel/setup.bash" >> ~/.bashrc

如图:
在这里插入图片描述

  1. 运行

打开一个终端

roscore

打开另一个终端

rosrun opencv_test opencv_test_node

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JR_Sim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值