从ROS包中提取图像时出错

时间:2017-02-09 22:38:43

标签: ubuntu ros

我一直在通过图像处理本地化项目进行本地化工作,我们得到的数据集是.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]:客户端[/ extract_images_1486684806987962257]希望主题/ can_bus_dbw / can_rx具有数据类型/ md5sum [sensor_msgs / Image / 060021388200f6f0f447d0fcd9c64743],但我们的版本有[dataspeed_can_msgs / CanMessageStamped / 33747cb98e223cafb806d7e94cb4071f]。丢弃连接。

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

1 个答案:

答案 0 :(得分:0)

尝试下面的内容:

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>

希望有所帮助!