返回

掌握Opencv 验证,让ROS的应用驰骋万里

后端

汇聚Ubuntu、ROS与OpenCV,搭建程序验证舞台
在验证OpenCV于ROS中的使用之前,我们必须先铺设好舞台。步骤如下:

1. 导入Ubuntu系统
首先,您需要有一个Ubuntu系统。如果尚未拥有,请下载并安装Ubuntu 20.04版本。

2. 亲密接触ROS
安装ROS Kinetic Kame。安装完成后,请记得初始化ROS。

3. 导入OpenCV
使用sudo apt-get install libopencv-dev来安装OpenCV。

造就“灵感空间”:创建ROS工作空间

一个可容纳各类功能包的ROS工作空间,是必不可少的。步骤如下:

1. 筑基
创建一个名为my_workspace的工作空间,输入mkdir ~/my_workspace指令即可。

2. 定居
切换至my_workspace工作空间,输入cd ~/my_workspace即可。

3. 打造SRC家园
在工作空间内,创建一个名为src的文件夹,用于存放功能包,输入mkdir src即可。

激活功能包:“opencv_test”的诞生

一个名为opencv_test的功能包,将成为我们验证的主角。步骤如下:

1.功能包的催生
在src文件夹内,输入catkin_create_pkg opencv_test rospy std_msgs cv_bridge image_transport sensor_msgs即可。

2. 编辑package.xml文件
使用文本编辑器打开opencv_test文件夹中的package.xml文件。在<build_depend>标签下添加rospystd_msgs。在<run_depend>标签下添加rospystd_msgscv_bridgeimage_transportsensor_msgs

登场,opencv_test_node.cpp!

我们准备了一个名为opencv_test_node.cpp的程序,来测试OpenCV的运行情况。步骤如下:

1.打开编辑器
在opencv_test功能包的src文件夹中,使用文本编辑器创建一个名为opencv_test_node.cpp的文件。

2. 编写代码
将如下代码复制粘贴到该文件中:

#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <cv_bridge/cv_bridge.h>
#include <sensor_msgs/Image.h>

using namespace cv;

void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
  try
  {
    cv_bridge::CvImagePtr cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);
    Mat image = cv_ptr->image;

    //在图像上添加文本
    putText(image, "Hello, OpenCV!", Point(10, 50), FONT_HERSHEY_SIMPLEX, 1.0, Scalar(0, 255, 0), 2);

    //显示图像
    imshow("Image", image);
    waitKey(1);
  }
  catch (cv_bridge::Exception& e)
  {
    ROS_ERROR("Could not convert from '%s' to 'bgr8'.", msg->encoding.c_str());
  }
}

int main(int argc, char** argv)
{
  ros::init(argc, argv, "opencv_test_node");
  ros::NodeHandle nh;

  //创建图像传输器对象
  image_transport::ImageTransport it(nh);

  //订阅名为"/camera/rgb/image_raw"的主题
  image_transport::Subscriber sub = it.subscribe("/camera/rgb/image_raw", 1, imageCallback);

  ros::spin();

  return 0;
}

出发:测试之旅,从这里开始

验证时刻终于到来,让我们一探究竟:

1. 启动工作空间
输入catkin_make -DCATKIN_WHITELIST_PACKAGES="opencv_test"指令,即可编译工作空间。

2. 启动ROS
输入roscore指令,启动ROS。

3. 启动测试程序
输入rosrun opencv_test opencv_test_node即可运行测试程序。

4. 打开窗口
打开一个图像查看窗口,如GIMP或OpenCV自带的窗口。

5. 查看图像
将相机对准图像查看窗口,您就能看到窗口中显示带有文字的图像。

结语

现在,您已经完成了Ubuntu系统上ROS中OpenCV的验证之旅。通过这一系列步骤,您已经能够在ROS中使用OpenCV处理图像数据。希望这篇文章能够帮助您在机器人开发中取得成功。