import json import os from pathlib import Path if __name__ == "__main__": # labelbox json export path path = "/Users/victor/Downloads/export-2021-02-27T17_15_30.291Z.json" # where to write the downloaded images out = Path("/Users/victor/Downloads/labelbox_test_flood-v2") # create out dir out.mkdir(exist_ok=True, parents=True) # load export data with open(path, "r") as f: data = json.load(f) for i, d in enumerate(data): # find all polygons objects = d["Label"]["objects"] # retrieve original image name name = d["External ID"] stem = Path(name).stem # output dir for current image m_out = out / stem[:30] m_out.mkdir(exist_ok=True, parents=True) # save 1 png per polygon for o, obj in enumerate(objects): print(f"{i}/{len(data)} : {o}/{len(objects)}") # create verbose label -> "cannotflood", "mustflood" label = obj["value"].replace("_", "") # unique polygon mask filename m_path = m_out / f"{stem}_{label}_{o}.png" # download address for curl uri = obj["instanceURI"] # command to download the image command = f'curl {uri} > "{str(m_path)}"' # execute command os.system(command) print("#" * 20)