in data/waymo/extract_pointcloud.py [0:0]
def extract(i):
FILENAME = segments[i]
run = FILENAME.split('segment-')[-1].split('.')[0]
out_base_dir = sys.argv[2]+'/%s/' % run
if not os.path.exists(out_base_dir):
os.makedirs(out_base_dir)
dataset = tf.data.TFRecordDataset(FILENAME, compression_type='')
print(FILENAME)
pc, pc_c = [], []
camID2extr_v2c = {}
camID2intr = {}
all_static_pc = []
for frame_cnt, data in enumerate(dataset):
if frame_cnt % 2 != 0: continue ### Set the sampling rate here
print('frame ', frame_cnt)
frame = open_dataset.Frame()
frame.ParseFromString(bytearray(data.numpy()))
extr_laser2v = np.array(frame.context.laser_calibrations[0].extrinsic.transform).reshape(4, 4)
extr_v2w = np.array(frame.pose.transform).reshape(4, 4)
if frame_cnt == 0:
for k in range(len(frame.context.camera_calibrations)):
cameraID = frame.context.camera_calibrations[k].name
extr_c2v =\
np.array(frame.context.camera_calibrations[k].extrinsic.transform).reshape(4, 4)
extr_v2c = np.linalg.inv(extr_c2v)
camID2extr_v2c[frame.images[k].name] = extr_v2c
fx = frame.context.camera_calibrations[k].intrinsic[0]
fy = frame.context.camera_calibrations[k].intrinsic[1]
cx = frame.context.camera_calibrations[k].intrinsic[2]
cy = frame.context.camera_calibrations[k].intrinsic[3]
k1 = frame.context.camera_calibrations[k].intrinsic[4]
k2 = frame.context.camera_calibrations[k].intrinsic[5]
p1 = frame.context.camera_calibrations[k].intrinsic[6]
p2 = frame.context.camera_calibrations[k].intrinsic[7]
k3 = frame.context.camera_calibrations[k].intrinsic[8]
camID2intr[frame.images[k].name] = np.array([[fx, 0, cx],
[0, fy, cy],
[0, 0, 1]])
# lidar point cloud
(range_images, camera_projections, range_image_top_pose) = \
frame_utils.parse_range_image_and_camera_projection(frame)
points, cp_points = frame_utils.convert_range_image_to_point_cloud(
frame,
range_images,
camera_projections,
range_image_top_pose)
points_all = np.concatenate(points, axis=0)
np.save('%s/frame_%03d.npy' % (out_base_dir, frame_cnt), points_all)
datalist.append(os.path.abspath('%s/frame_%03d.npy' % (out_base_dir, frame_cnt)))