用matlab从rosbag文件里读取图片

情景介绍

初学ros和linux,小白之路太艰辛,所以尽量详细记录下一步步的操作,防止自己忘记,也便于查错,大牛看见了也请指点一下。
电脑系统是linux 16.04, 相机是realsense 435i, 用来记录rgbd信息的是ros这个系统

利用ros记录rgbd图像
首先在terminal中输入

roslaunch realsense2_camera rs_camera.launch align_depth:=true

在新的第二个terminal中输入

rosrun rviz rviz

在rviz中设置
fixed frame ->camera_link
add->by topic->sensor_msgs/Image

打开第三个terminal:

rosbag record -O rgb /camera/color/image_raw

视频记录结束后,在terminal1 ,terminal2和terminal3中都输入
Ctrl+c

然后就在项目运行的对应的文件夹中找到了相应的bag文件,在这里命名为‘rgb.bag’

matlab下读取image

文章中的matlab安装在window系统中

用matlab从rosbag文件里读取图片_第1张图片

用matlab读取bag文件前,调整matlab的目录到bag存在的文件夹,文中rgb.bag存在D:/bagfile中

用matlab读取bag文件

bag = rosbag('rgb.bag');

从bag文件中读取相应的topic,就是在rviz中记录的topic ”sensor_msgs/Image“

rgb_message=select(bag,'MessageType','sensor_msgs/Image');

提取视频

data=readMessages(rgb_message);

从一系列图片中提取单帧图片,这里只取第一幅图

image_n=data{1,1};

如果取第i副图,请用下面的语句

image_n=data{i,1};

用matlab从rosbag文件里读取图片_第2张图片

image_n并不是图片,而是一个struct,里面报刊了MessageTyoe,Header,Height等等
为了转化为图片 用matlab自带的函数"readImage"

image_chen_show = readImage(image_n);

用matlab从rosbag文件里读取图片_第3张图片
上图可以看见,用readImage得到的结果是一个480乘以640乘以3的rgb图片
用imshow把图片显示出来

figure;imshow(image_chen_show,[]);

用matlab从rosbag文件里读取图片_第4张图片
成功提取图片并显示

有不对之处请赐教

你可能感兴趣的:(用matlab从rosbag文件里读取图片)