将JPG编码的数组从ROS sensor_msgs / CompressedImage保存到roscpp中的文件

时间:2017-06-16 07:49:49

标签: c++ jpeg ros

我有一个机器人操作系统(ROS).bag文件,其中包含带有sensor_msgs / CompressedImage消息形式的.jpg压缩图像。我编写了一个roscpp程序,可以访问各个消息中的原始数据,但是我很难将原始jpg编码数据数组保存到文件中。

不幸的是,我所拥有的包文件非常大,包含数千张图片,而且我在时间限制下工作。我尝试使用rosbag play -i和image_view导出来保存图像,但速度太慢了。我也尝试使用Python,但是Python很慢,而且我没有办法保存图像(与C ++中的问题相同)。

基本上,我需要一种方法来为我的数据添加有效的jpg标头并将其保存在文件中。任何建议都表示赞赏!

1 个答案:

答案 0 :(得分:0)

为应该已经是图像的数据块创建图像标头可能不是正确的方法。毕竟,jpegs很复杂,数据流应该具有解码它们所需的所有信息......这些工具怎么能够显示给你?

通过查看第一个和最后一个字节,您可以很好地了解二进制blob是否包含图像。例如,Jpegs以FF D8开头,以FF D9结尾。其他文件的一些神奇数字可以在这里找到:https://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files