init fusion lcd orin config
This commit is contained in:
105
preparedataset.py
Normal file
105
preparedataset.py
Normal file
@@ -0,0 +1,105 @@
|
||||
import os
|
||||
|
||||
import numpy as np
|
||||
import torch
|
||||
import tqdm
|
||||
|
||||
|
||||
def k3602k(k, k360):
|
||||
for src in [0, 3, 4, 5, 6, 7, 9, 10]:
|
||||
tgt = src + 50
|
||||
path_pose = k360 + '/data_poses/2013_05_28_drive_%04d_sync/cam0_to_world.txt' % src
|
||||
path_velo = k360 + '/data_3d_raw/2013_05_28_drive_%04d_sync/velodyne_points/data' % src
|
||||
path_calib = k360 + '/calibration/calib_cam_to_velo.txt'
|
||||
path_img = k360 + '/data_2d_raw/2013_05_28_drive_%04d_sync/image_00/data_rect' % src
|
||||
|
||||
path_pose1 = k + '/data_odometry_poses/dataset/poses/%02d.npy' % tgt
|
||||
path_velo1 = k + '/data_odometry_velodyne/dataset/sequences/%02d/velodyne' % tgt
|
||||
path_calib1 = k + '/data_odometry_calib/dataset/sequences/%02d' % tgt
|
||||
path_img1 = k + '/data_odometry_color/dataset/sequences/%02d/image_2/' % tgt
|
||||
|
||||
if not os.path.exists(path_velo1):
|
||||
os.makedirs(path_velo1)
|
||||
if not os.path.exists(path_img1):
|
||||
os.makedirs(path_img1)
|
||||
if not os.path.exists(path_calib1):
|
||||
os.makedirs(path_calib1)
|
||||
|
||||
if not os.path.exists(path_calib1 + '/calib.txt'):
|
||||
os.symlink(path_calib, path_calib1 + '/calib.txt')
|
||||
|
||||
with open(path_calib, 'r') as f:
|
||||
for line in f.readlines():
|
||||
data = np.array([float(x) for x in line.split()])
|
||||
cam0_to_velo = np.reshape(data, (3, 4))
|
||||
cam0_to_velo = np.vstack([cam0_to_velo, [0, 0, 0, 1]])
|
||||
cam0_to_velo = torch.tensor(cam0_to_velo)
|
||||
poses2 = []
|
||||
ids = []
|
||||
with open(path_pose, 'r') as f:
|
||||
for x in f:
|
||||
x = x.strip().split()
|
||||
x = [float(v) for v in x]
|
||||
ids.append(int(x[0]))
|
||||
pose = torch.zeros((4, 4), dtype=torch.float64)
|
||||
pose[0, 0:4] = torch.tensor(x[1:5])
|
||||
pose[1, 0:4] = torch.tensor(x[5:9])
|
||||
pose[2, 0:4] = torch.tensor(x[9:13])
|
||||
pose[3, 3] = 1.0
|
||||
pose = pose @ cam0_to_velo.inverse()
|
||||
poses2.append(pose.float().numpy())
|
||||
pose = np.stack(poses2)
|
||||
np.save(path_pose1, pose)
|
||||
|
||||
cnt = 0
|
||||
for i in tqdm.tqdm(ids, desc='%02d:' % src):
|
||||
path_velo_now = os.path.join(path_velo, '0000%06d.bin' % i)
|
||||
path_img_now = os.path.join(path_img, '0000%06d.png' % i)
|
||||
if os.path.exists(path_velo_now) and os.path.exists(path_img_now):
|
||||
pass
|
||||
else:
|
||||
break
|
||||
path_velo_now1 = os.path.join(path_velo1, '%06d.bin' % cnt)
|
||||
path_img_now1 = os.path.join(path_img1, '%06d.png' % cnt)
|
||||
if not os.path.exists(path_velo_now1):
|
||||
os.symlink(path_velo_now, path_velo_now1)
|
||||
if not os.path.exists(path_img_now1):
|
||||
os.symlink(path_img_now, path_img_now1)
|
||||
cnt = cnt + 1
|
||||
|
||||
|
||||
def todataset(kitti_root, dataset_root):
|
||||
sequences = [0, 5, 6, 7, 8, 9, 50, 54, 55, 56, 59]
|
||||
for s in sequences:
|
||||
if s >= 50:
|
||||
suffix = '.npy'
|
||||
else:
|
||||
suffix = '.txt'
|
||||
kitti_velo_dir = kitti_root + '/data_odometry_velodyne/dataset/sequences/%02d/velodyne' % s
|
||||
kitti_img_dir = kitti_root + '/data_odometry_color/dataset/sequences/%02d/image_2' % s
|
||||
kitti_pose_dir = kitti_root + '/data_odometry_poses/dataset/poses/%02d' % s + suffix
|
||||
kitti_calib_dir = kitti_root + '/data_odometry_calib/dataset/sequences/%02d/calib.txt' % s
|
||||
dataset_path = dataset_root + '/%02d' % s
|
||||
if not os.path.exists(dataset_path):
|
||||
os.makedirs(dataset_path)
|
||||
dataset_velo_dir = dataset_path + '/velodyne'
|
||||
dataset_img_dir = dataset_path + '/image_2'
|
||||
dataset_pose_dir = dataset_path + '/poses' + suffix
|
||||
dataset_calib_dir = dataset_path + '/calib.txt'
|
||||
if not os.path.exists(dataset_velo_dir):
|
||||
os.symlink(kitti_velo_dir, dataset_velo_dir)
|
||||
if not os.path.exists(dataset_img_dir):
|
||||
os.symlink(kitti_img_dir, dataset_img_dir)
|
||||
if not os.path.exists(dataset_pose_dir):
|
||||
os.symlink(kitti_pose_dir, dataset_pose_dir)
|
||||
if not os.path.exists(dataset_calib_dir):
|
||||
os.symlink(kitti_calib_dir, dataset_calib_dir)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
k360 = '/home/coop8/chenyouyuan/FUSIONLCD/KITTI360'
|
||||
k = '/home/coop8/chenyouyuan/FUSIONLCD/KITTI'
|
||||
k3602k(k, k360)
|
||||
kitti_root = '/home/coop8/chenyouyuan/FUSIONLCD/KITTI'
|
||||
dataset_root = '/home/coop8/chenyouyuan/FUSIONLCD/sequences'
|
||||
todataset(kitti_root, dataset_root)
|
||||
Reference in New Issue
Block a user