ROS提取bag视频中的图片单帧保存
1.获取bag的Topic
采用rosbag play *.bag播放bag文件,通过rostopic list指令查询当前的话题列表,找到要保存图像的话题。
D435i相机的图像信息在/device_0/sensor_1/Color_0/image/data话题中。
2.创建launch文件
创建一个功能包,在功能包里面创建launch文件夹,在文件夹中新建一个test.launch文件,文件内容如下:
<launch>
<node pkg="rosbag" type="play" name="rosbag" args="{bag_name}*.bag"/>
<node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
<remap from="image" to="{rostopic}"/>
</node>
</launch>
代码中{bag_name}是bag的名字,包含绝对路径,{rostopic}是话题名称。
3.运行launch文件并提取图片
launch文件创建完成即可运行,运行过程中会逐帧运行一遍进行保存,可以看到Save image…字样,完成后会显示log文件的内容,此时就可以Ctrl+C结束运行了。
运行完后图片在~/.ros中保存,正常我们是看不到的,需要将图片提取出来,代码如下:
cd ~
mkdir image_File //创建一个文件夹保存图片
mv ~/.ros/*.jpg ~/image_File //将图片提取到创建的文件夹中
在这个文件夹中即可看到提取的图片。
这篇文章主要参考大佬教程:
https://blog.csdn.net/qq_38364548/article/details/127188706