记录如何将Realsense View录制的bag包提取数据,并转化为TUM数据集格式
录制的数据集格式为彩色 640x480 RGB8;深度 640x480 16位,提取需要根据该函数使用
提取原文件
使用rs-convert工具,采用-i和-r参数,具体使用方法参考
RS_RAW文件夹必须已经存在
rs-convert -i RS.bag -r RS_RAW/
提取后的文件如图所示
经过对格式进行分析,需要提取的格式是后缀为.raw的文件,_Color_为彩色文件,_Depth_为深度图文件
转化为TUM格式
彩色图的数据存储为[R,G,B,R,G,B…],深度图的数据存储为[H,L,H,L…],借助Numpy读取处理,借助cv2转化。使用时需要根据自己的图片格式对img_shape参数进行调整,根据深度图格式对color_image = np.fromfile(read_name, np.uint16).reshape(img_shape)语句进行整。
# RealSenseRAWToTUM.py
import os
import cv2
import sys
import numpy as np
if __name__ == "__main__":
if len(sys.argv) != 3:
print("python RealSenseRAWToTUM.py src_path out_path")
exit()
src_path = sys.argv[1]
out_path = sys.argv[2]
out_rgb_path = os.path.join(out_path, "rgb")
out_depth_path = os.path.join(out_path, "depth")
img_shape = (480, 640)
if os.path.exists(src_path):
print("查找到源文件")
else:
print("源文件夹不存在")
exit()
if os.path.exists(out_path):
if not os.path.exists(out_rgb_path):
os.mkdir(out_rgb_path)
if not os.path.exists(out_depth_path):
os.mkdir(out_depth_path)
else:
os.mkdir(out_path)
os.mkdir(out_rgb_path)
os.mkdir(out_depth_path)
print("输出文件夹检查完毕")
all_raw_files = os.listdir(src_path)
depth_raw_files = []
color_raw_files = []
for _ in all_raw_files:
if "raw" in _:
if "Color" in _:
color_raw_files.append(_)
elif "Depth" in _:
depth_raw_files.append(_)
if len(color_raw_files) != len(color_raw_files):
print("深度图彩色图数量不等")
exit(