Model / run /json2png.py
CVRPDataset's picture
Upload 7 files
1060621 verified
import base64
import json
import os
import os.path as osp
import numpy as np
import PIL.Image
from labelme import utils
def json2mask(root, classes)
before_path = os.path.join(root, 'json') # labelme files
jpgs_path = os.path.join(root, 'jpgs') # images
pngs_path = os.path.join(root, 'masks') # annotations
if not os.path.exists(jpgs_path):
os.makedirs(jpgs_path)
if not os.path.exists(pngs_path):
os.makedirs(pngs_path)
path = before_path
for file in os.listdir(path):
if file.endswith('json'):
data = json.load(open(os.path.join(path, file)))
if data['imageData']:
imageData = data['imageData']
else:
imagePath = os.path.join(os.path.dirname(path), data['imagePath'])
with open(imagePath, 'rb') as f:
imageData = f.read()
imageData = base64.b64encode(imageData).decode('utf-8')
img = utils.img_b64_to_arr(imageData)
label_name_to_value = {classes[0]: 0, classes[2]:0, classes[1]: 1 }
lbl = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)
PIL.Image.fromarray(img).save(osp.join(jpgs_path, file.split(".")[0] + '.jpg'))
utils.lblsave(osp.join(pngs_path, file.split(".")[0] + '.png'), lbl)
if __name__ == '__main__':
root = 'J:/dataset_panicle/2023/only_plant/images'
classes = ["_background_", "panicle", "other"]
json2mask(root,classes)