在ROS中使用OpenCV进行简单的图象处理--原理篇

一.简介

在ROS系统中,可以使用多种视觉传感器(摄像头),其中包括简单的笔记本摄像头,也包括例如Kinect和Xtion的深度摄像头。通过摄像头我们可以读取周围的环境数据,从而可以进行视觉的相关操作。而在计算机视觉编程方面,OpenCV是一个强大的、开源的的计算机视觉库,里面有丰富的API,可以满足大部分计算机视觉任务。所以如果可以在ROS系统下使用OpenCV库,可以大大简化视觉编程的难度,起码不用自己编写函数。然而OpenCV官网没有提供ROS版本的OpenCV库,只有windows Mac 和Unix。原因很简单,因为ROS并不是实际意义上的操作系统,而是一个开源的程序开发架构,个人认为最大的特点在于节点的并行性。

虽然没有ROS版本的OpenCV库,但究其根本来说,在ROS使用OpenCV的关键问题就是:ROS环境下图象格式为sensor_msgs类型而OpenCV处理的图象格式是Mat类型(opencv2).ROS提供了这两种图象格式相互转换的软件包,使得我们可以将ROS系统下读取的图象转换成OpenCV的Mat格式,再使用OpenCV进行图像处理。

2. 理解ROS-OpenCV 转换架构(stack)

ROS提供了一个OpenCV到ROS的转换stack称为vision_opencv,这个stack中包含如下两个软件包:
1. cv_bridge:这个软件包包含了一个可以实现ROS的sensor_msgs/Image类型和OpenCV2中的cv::Mat类型相互转换的API库。可以把这个包理解为沟通ROS和OpenCV的桥梁。
2. image_geometry:笔者还没涉猎以后补充。

3. 安装perception程序包

perception程序包包含了ROS中和感知相关的各种程序包例如OpenCV、PCL等等。

安装方法:

            $ sudo apt-get install ros-版本-perception

perception中包含的程序包:

  1. image-common:
    这是一个变换程序包里面包括处理ROS中图片的基本变换程序包。如下:(重点介绍image_transport因为程序中涉及到,其他的日后补充。)
    a) image_transport:
    这个程序包是在发布图象时对图象进行JPEG/PNG的压缩编码,也可以加入自己的压缩编码形式。接收图象时保存图象的宽度和高度。相比不同的ROS中的订阅发布来说,image_transport的效率更高。
    b) image_。。。
    c) image_。。。
    d) image_。。。
  2. image-pipline
  3. image-transport-plugins
  4. laser-pipeline
  5. perception-pcl
  6. vision-opencv

4. 使用cv_bridge在ROS和opencv之间转换图象

ROS和OpenCV转换具体使用的是cv_bridge中的CvBridge库,其转换机制如下图所示:
这里写图片描述
可见cv_bridge在类型转换过程中充当着桥梁的作用。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值