博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ROS学习笔记(1):在ROS中使用OpenCV进行简单的图象处理--原理篇
阅读量:2385 次
发布时间:2019-05-10

本文共 1607 字,大约阅读时间需要 5 分钟。

笔者使用的摄像头和系统简介:

ubuntu 12.04

ROS hydro
PrimeSense 1.09(默认读者已经安装好了相应摄像机的驱动程序,可以使用ROS中的image_view来显示摄像机图象)

命令如下:

$ roscore
$ roslaunch openni2_launch openni2.launch
$ rosrun image_view image_view image:=camera/rgb/image_ra

C++编程

程序实现的功能: 从摄像头中读取图象信息,转化成OpenCV中的Mat类型后,将图象转化成灰度图象,再将灰度图象转换成ROS下的图象格式进行输出。

 

正文

1. 简介:

在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在类型转换过程中充当着桥梁的作用。

你可能感兴趣的文章
php5对象复制、clone、浅复制与深复制
查看>>
php设计模式
查看>>
git与github在ubuntu下的使用
查看>>
css pie.htc使用总结
查看>>
python包含中文字符串长度
查看>>
sysbench 0.5 性能测试工具使用手册
查看>>
通过telnet连接查看memcache服务器
查看>>
django不用在数据库中创建新的user表而使用它的后台管理功能
查看>>
php array_unshift()修改数组key
查看>>
mysql性能优化-查询(Query)优化-2
查看>>
MySQL分区表的使用
查看>>
MongoDB 地理位置索引的实现原理
查看>>
MongoDB与MySQL的插入、查询性能测试
查看>>
深入理解OAuth2.0协议
查看>>
https原理:证书传递、验证和数据加密、解密过程解析
查看>>
MySQL在大型网站的应用架构演变
查看>>
sphinx教程1__mysql sphinx引擎插件式热安装
查看>>
sphinx教程2__安装、配置和使用
查看>>
ttserver 缓存使用和过期设置
查看>>
php pconnect 长连接原理
查看>>