从 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>
希望对您有所帮助!
我一直在通过图像处理本地化项目进行本地化,我们得到的数据集是 .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>
希望对您有所帮助!