解析rosbag中的.bag文件,得到.jpg图片数据和.pcd点云数据

目录

一.查看.bag文件中的数据信息

二.解析.bag文件到.jpg文件

 三.解析.bag文件到.pcd点云数据文件

参考资料:


一.查看.bag文件中的数据信息

rosbag info *.bag

 结果如下所示:

二.解析.bag文件到.jpg文件

方法一(存在解析出的图片数量与msg数量不符的情况,方法二可解决)

1.使用touch命令建立export.launch文件, 文件内容如下所示,注意更改相应的.bag文件路径和topics名称。

touch export.launch
<launch>
      <node pkg="rosbag" type="play" name="rosbag" args="-d 2 /home/gao/GAC/1stroll.bag"/>
      <node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
        <remap from="image" to="/Output_Matrix_Mono_Image"/>
      </node>
 </launch>

2.打开终端,运行roscore:

roscore

3.新建终端,cd到export.launch文件夹下,运行.launch文件。

roslaunch export.launch

 4.解析的图片在home下的 .ros目录里,将目录下的图片移动到你想要的文件夹。

mv ~/.ros/frame*.jpg ~/GAC/image/1st

方法二(推荐,亲测可用)

1.在.bag文件所在的文件夹下建立get_image.py文件,内容如下。

#coding:utf-8

import roslib;
import rosbag
import rospy
import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
from cv_bridge import CvBridgeError

path='/home/gao/GAC/image' #存放图片的位置
class ImageCreator():


    def __init__(self):
        self.bridge = CvBridge()
        with rosbag.Bag('2ndroll.bag', 'r') as bag:   #要读取的bag文件;
            for topic,msg,t in bag.read_messages():
                if topic == "/Output_Matrix_Mono_Image":  #图像的topic;
                        try:
                            cv_image = self.bridge.imgmsg_to_cv2(msg,"bgr8")
                        except CvBridgeError as e:
                            print e
                        timestr = "%.6f" %  msg.header.stamp.to_sec()
                        #%.6f表示小数点后带有6位,可根据精确度需要修改;
                        image_name = timestr+ ".jpg" #图像命名:时间戳.jpg
                        cv2.imwrite(path+image_name, cv_image)  #保存;


if __name__ == '__main__':

    #rospy.init_node(PKG)

    try:
        image_creator = ImageCreator()
    except rospy.ROSInterruptException:
        pass

2.如果安装有anaconda,退出base环境,并运行get_image.py文件。

conda deactivate #退出base环境
python --version #查看Python版本,确保使用的Python是ros的Python
python get_image.py

 三.解析.bag文件到.pcd点云数据文件

利用bag_to_pcd, 代码如下(亲测有效)

rosrun pcl_ros bag_to_pcd <*.bag> <topic> <output_directory>

参考资料:

http://wiki.ros.org/rosbag/Tutorials/Exporting image and video data

从ROS bag包中提取出带时间戳的图片和pcd点云数据_zbr794866300的博客-CSDN博客_rosbag 提取点云

解析rosbag中的.bag文件,得到.jpg图片数据和.pcd点云数据_NJIER的博客-CSDN博客

  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值