从.bag文件中提取图片

1.创建文件export.launch,如下:

  <launch>
      <node pkg="rosbag" type="play" name="rosbag" args="-d 2 /media/zp/pop_up_tum_far_preproc_tf.bag"/>
      <node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
        <remap from="image" to="/rect_color_raw"/>
      </node>
 </launch>

其中标红两处根据自己实际情况修改,1.为.bag文件路径,2.为待提取的topic,具体写什么,使用

rosbag info  **.bag

来查看其中的topic,对应选择。

从.bag文件中提取图片

写好后,执行命令

roslaunch export.launch

如下图所示,正在提取:

从.bag文件中提取图片

结束标志:

从.bag文件中提取图片

所提取的图片在~/.ros路径下,先查看如下图所示:

从.bag文件中提取图片

将其移到你的目标文件中,标红的为新建的目录:

mv ~/.ros/*.jpg /media/zp/zengpan/dataset/bag_picture_tum_fr3

执行结果:

从.bag文件中提取图片

这样就将图片提取出来了。

===================================================================================

另一个问题是,提取cnn_label图片,用上述方法,会报错。

[ERROR] [1557131237.198396237]: Unable to convert 8UC1 image to bgr8
[ WARN] [1557131237.198481326]: Couldn't save image, no data!

从.bag文件中提取图片


此时,

CV_8UC1, 是256 greyscale图,

CV_8UC1,CV_8UC2,CV_8UC3,中,1,2,3表示通道数。

目前还没找到解决方法。

应该是ROS与OPENCV之间图片数据格式的问题。