参考:https://blog.csdn.net/qq_25458977/article/details/109358577
- 经常存在这种情况,我们需要在移动设备上录制一些包含图像信息的rosbag,但是如果录制raw格式的话,占的内存空间太大, 一般可以采用录制compressed模式。
- 但是一般的代码中,图像从sensor_msgs转换到cv::Mat都是通过原图像,即raw类型的topic,这时可以我们自己手动添加函数,即可以订阅compressed topic的类型;或者如果改代码实在麻烦,也可以直接将录制好的comppressed包转换成raw格式。
- 例如:如下列出的是bag包中含有comppressed类型的图像数据:
/rosout
/rosout_agg
/usb_cam150/image_raw/compressed
/usb_cam180/image_raw/compressed
需要转换为raw类型,运行如下命令即可:
rosrun image_transport republish compressed in:=/usb_cam150/image_raw raw out:=/usb_cam150/image_raw
rosrun image_transport republish compressed in:=/usb_cam180/image_raw raw out:=/usb_cam180/image_raw
继续播包可看到转换之后的类型有:
/rosout
/rosout_agg
/usb_cam150/image_raw
/usb_cam150/image_raw/compressed
/usb_cam180/image_raw
/usb_cam180/image_raw/compressed