draw_json.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/env python
  2. import argparse
  3. import base64
  4. import json
  5. import os
  6. import sys
  7. import imgviz
  8. import matplotlib.pyplot as plt
  9. from labelme import utils
  10. PY2 = sys.version_info[0] == 2
  11. def main():
  12. parser = argparse.ArgumentParser()
  13. parser.add_argument('json_file')
  14. args = parser.parse_args()
  15. json_file = args.json_file
  16. data = json.load(open(json_file))
  17. if data['imageData']:
  18. imageData = data['imageData']
  19. else:
  20. imagePath = os.path.join(os.path.dirname(json_file), data['imagePath'])
  21. with open(imagePath, 'rb') as f:
  22. imageData = f.read()
  23. imageData = base64.b64encode(imageData).decode('utf-8')
  24. img = utils.img_b64_to_arr(imageData)
  25. label_name_to_value = {'_background_': 0}
  26. for shape in sorted(data['shapes'], key=lambda x: x['label']):
  27. label_name = shape['label']
  28. if label_name in label_name_to_value:
  29. label_value = label_name_to_value[label_name]
  30. else:
  31. label_value = len(label_name_to_value)
  32. label_name_to_value[label_name] = label_value
  33. lbl = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)
  34. label_names = [None] * (max(label_name_to_value.values()) + 1)
  35. for name, value in label_name_to_value.items():
  36. label_names[value] = name
  37. lbl_viz = imgviz.label2rgb(
  38. label=lbl,
  39. img=imgviz.rgb2gray(img),
  40. label_names=label_names,
  41. font_size=30,
  42. loc='rb',
  43. )
  44. plt.subplot(121)
  45. plt.imshow(img)
  46. plt.subplot(122)
  47. plt.imshow(lbl_viz)
  48. plt.show()
  49. if __name__ == '__main__':
  50. main()