Source code for universal_devkit.scripts.supervisely_3d_to_universal

"""
Script to format annotations from supervisely.io into
the custom universal format


$ python supervisely_3d_to_universal.py -i input_directory -o output_directory
"""

import argparse
import os
from glob import glob
from pathlib import Path

from universal_devkit.utils.utils import create_token, read_json, write_json


[docs]def convert_supervisely_3d_to_universal(input_directory, output_directory): Path(output_directory).mkdir(parents=True, exist_ok=True) for filepath in glob("{}/*.pcd.json".format(input_directory)): # Get the filename with extensions (ex. 1212129.pcd.json) filename = Path(filepath).name input_data = read_json(filepath) output_data = [] for figure in input_data["figures"]: ann = {} ann["token"] = create_token() ann["sample_token"] = "" ann["instance_token"] = create_token() ann["visibility_token"] = "" ann["attribute_tokens"] = [] figure_geometry = figure["geometry"] ann["translation"] = [ figure_geometry["position"]["x"], figure_geometry["position"]["y"], figure_geometry["position"]["z"], ] ann["size"] = [ figure_geometry["dimensions"]["x"], figure_geometry["dimensions"]["y"], figure_geometry["dimensions"]["z"], ] ann["rotation"] = [ figure_geometry["rotation"]["x"], figure_geometry["rotation"]["y"], figure_geometry["rotation"]["z"], ] ann["prev"] = "" ann["next"] = "" ann["num_lidar"] = 0 ann["num_radar"] = 0 ann["labeller"] = figure["labelerLogin"] ann["annotation_created"] = figure["createdAt"] output_data.append(ann) write_json(output_data, os.path.join(output_directory, filename))
if __name__ == "__main__": # Construct the argument parser and parse the arguments ap = argparse.ArgumentParser() ap.add_argument( "-o", "--output", type=str, default="output", help="The output directory" ) ap.add_argument("-i", "--input", type=str, help="The input directory") args = vars(ap.parse_args()) convert_supervisely_3d_to_universal(args["input"], args["output"])