从 ROS 包中提取图像时出错

error while extracting images from a ROS bag

我一直在通过图像处理本地化项目进行本地化,我们得到的数据集是 .bag 文件中的压缩图像,所以我有多种方法来提取这些图像,起初我尝试了以下方法:

mkdir images
cd ./images
rosrun image_view extract_images _sec_per_frame:=0.01 image:=<IMAGETOPICINBAGFILE>
run rosbag play <BAGFILE>

我也尝试过使用启动文件

<launch>
   <node pkg="rosbag" type="play" name="rosbag" args="-d 2 /home/devo/datasets/Ch2_002/HMB_1.bag"/>
   <node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME" args="compressed">
   <remap from="image" to="/camera/image_raw"/>
   <param name="image_transport" value="compressed"/>
   </node>
</launch>

但它总是给我同样的错误

[ERROR] [1486685243.634766995]: Client [/extract_images_1486684806987962257] wants topic /can_bus_dbw/can_rx to have datatype/md5sum [sensor_msgs/Image/060021388200f6f0f447d0fcd9c64743], but our version has [dataspeed_can_msgs/CanMessageStamped/33747cb98e223cafb806d7e94cb4071f]. Dropping connection.

所以我只想知道我做错了什么以及如何从包中提取这些图像(知道我的 ROS 版本:1.12.6)

尝试以下操作:

1- 在可写目录中:

$ rosrun image_view extract_images image:=<IMAGETOPICINBAGFILE> _image_transport:=compressed

2 - 在另一个终端,播放你的包文件

这应该会将您的图像保存在该目录中。

现在,如果这不起作用,您确定您的 image_transport 压缩是真的吗?导致错误的原因是同一主题的发布者和订阅者具有不同的消息类型。如果您的包是使用具有不同消息定义的不同平台创建的,而不是您正在播放它的平台,也可能会发生这种情况。

编辑:

另一种方法是解压数据然后保存。它是这样的:

$rosrun image_transport republish compressed in:=<IMAGETOPICINBAGFILE> raw out:=image/raw

$rosrun image_view image_saver image:=image/raw _save_all_image:=all _filename_format:=%04d.%s

$ rosbag play <bagfile>

希望对您有所帮助!