labelme生成的json文件批量转化为label图片

修改
C:\ProgramData\Anaconda3\Lib\site-packages\labelme\cli\json_to_dataset.py

import argparse
import base64
import json
import os
import os.path as osp

import PIL.Image
import yaml

from labelme.logger import logger
from labelme import utils


def main():
    logger.warning('This script is aimed to demonstrate how to convert the'
                   'JSON file to a single image dataset, and not to handle'
                   'multiple JSON files to generate a real-use dataset.')

    parser = argparse.ArgumentParser()
    parser.add_argument('json_file')
    parser.add_argument('-o', '--out', default=None)
    args = parser.parse_args()

    json_file = args.json_file

    if args.out is None:
        out_dir = osp.basename(json_file).replace('.', '_')
        out_dir = osp.join(osp.dirname(json_file), out_dir)
    else:
        out_dir = args.out

    data = json.load(open(json_file))

    if data['imageData']:
        imageData = data['imageData']
    else:
        imagePath = os.path.join(os.path.dirname(json_file), 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 = {'_background_': 0}
    for shape in sorted(data['shapes'], key=lambda x: x['label']):
        label_name = shape['label']
        if label_name in label_name_to_value:
            label_value = label_name_to_value[label_name]
        else:
            label_value = len(label_name_to_value)
            label_name_to_value[label_name] = label_value
    lbl = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)

    label_names = [None] * (max(label_name_to_value.values()) + 1)
    for name, value in label_name_to_value.items():
        label_names[value] = name
    lbl_viz = utils.draw_label(lbl, img, label_names)
    saved_name = os.path.splitext(os.path.basename(json_file))[0]+'.png'
    utils.lblsave(osp.join('D:\\coslight\\0304_beforetolabel\\label\\', saved_name), lbl)**
    #saved_name 取得json文件名称,使得转换后的label图片的名称为json的名称
    #'D:\\coslight\\0304_beforetolabel\\label\\'为保存label图片的文件夹
    #将原文件此处以下部分代码删去,这样就不用生成包含标签种类名称,原始图片,转换后的图片文件夹,只需要json转换后的label图片

if __name__ == '__main__':
    main()

代码加粗部分为修改的地方
在windows环境下打开cmd进行批量标注转换成图片:
cd D:\json
for /r %i in (*) do labelme_json_to_dataset %i

D:\json为json保存文件夹

label的颜色同时也能改变,具体参考
https://github.com/wkentaro/labelme/issues/288

你可能感兴趣的:(深度学习,labelme,json)