将 ROS sensor_msgs/CompressedImage 中的 JPG 编码数组保存到 roscpp 中的文件
Saving JPG encoded array from a ROS sensor_msgs/CompressedImage to a file in roscpp
我有一个机器人操作系统 (ROS) .bag 文件,其中包含 sensor_msgs/CompressedImage 消息形式的 .jpg 压缩图像。我已经编写了一个 roscpp 程序,可以访问各个消息中的原始数据,但是我很难将原始 jpg 编码数据数组保存到文件中。
不幸的是,我的包文件非常大,包含数千张图片,而且我的工作时间有限。我尝试使用 rosbag play -i 和 image_view export 来保存图像,但速度太慢了。我也尝试使用 Python,但是 Python 很慢,而且我没有办法保存图像(与 C++ 中的问题相同)。
本质上,我需要一种方法将有效的 jpg header 添加到我的数据中并将其保存在文件中。任何建议表示赞赏!
为应该已经是图像的数据块创建图像 header 可能不是正确的方法。毕竟,jpeg 很复杂,数据流应该包含解码它们所需的所有信息……这些工具还能如何向您显示它们?
您可以通过查看第一个和最后一个字节来了解二进制 blob 是否包含图像。例如,Jpeg 以 FF D8
开头并以 FF D9
结尾。其他文件的一些幻数可以在这里找到:https://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files
我有一个机器人操作系统 (ROS) .bag 文件,其中包含 sensor_msgs/CompressedImage 消息形式的 .jpg 压缩图像。我已经编写了一个 roscpp 程序,可以访问各个消息中的原始数据,但是我很难将原始 jpg 编码数据数组保存到文件中。
不幸的是,我的包文件非常大,包含数千张图片,而且我的工作时间有限。我尝试使用 rosbag play -i 和 image_view export 来保存图像,但速度太慢了。我也尝试使用 Python,但是 Python 很慢,而且我没有办法保存图像(与 C++ 中的问题相同)。
本质上,我需要一种方法将有效的 jpg header 添加到我的数据中并将其保存在文件中。任何建议表示赞赏!
为应该已经是图像的数据块创建图像 header 可能不是正确的方法。毕竟,jpeg 很复杂,数据流应该包含解码它们所需的所有信息……这些工具还能如何向您显示它们?
您可以通过查看第一个和最后一个字节来了解二进制 blob 是否包含图像。例如,Jpeg 以 FF D8
开头并以 FF D9
结尾。其他文件的一些幻数可以在这里找到:https://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files