Untitled Note
By: Anonymous1/11/202217 views Public Note
import os
import numpy as np
import json
import argparse
from pathlib import Path
def extract_points_info(json_file):
f1 = open(json_file)
data = json.load(f1)
raw_pts = data['points']
dev_loc = data['device_position']
points_list = []
for pnt in raw_pts:
pntx = pnt['x'] - dev_loc['x']
pnty = pnt['y'] - dev_loc['y']
pntz = pnt['z'] - dev_loc['z']
pnt_str = str(pntx) ' ' str(pnty) ' ' str(pntz)
points_list.append(pnt_str)
return points_list
def write_pcd(filename, points_list):
num_pts_str = str(len(points_list))
header_content = ['# .PCD v0.7 - Point Cloud Data file format','VERSION 0.7','FIELDS x y z','SIZE 4 4 4','TYPE F F F','COUNT 1 1 1',
'WIDTH ' num_pts_str,'HEIGHT 1','VIEWPOINT 0 0 0 1 0 0 0','POINTS ' num_pts_str,'DATA ascii']
with open(filename, "w") as f2:
f2.write('\n'.join(header_content))
f2.write('\n')
f2.write('\n'.join(points_list))
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--path', type=str, required=True)
args = parser.parse_args()
jsons_fol_path = args.path
pcds_path = os.path.join(jsons_fol_path, 'pcd')
Path(pcds_path).mkdir(parents=True, exist_ok=True)
print_iter = 0
for file in os.listdir(jsons_fol_path):
if file.endswith(".json"):
json_file = os.path.join(jsons_fol_path, file)
pcd_file = file.split('.')[0] '.pcd'
save_pcd_path = os.path.join(pcds_path, pcd_file)
points_list = extract_points_info(json_file)
write_pcd(save_pcd_path,points_list)
print_iter = 1
if print_iter ==0:
print('Completed ' str(print_iter) ' items')
print('Conversion Complete')