一、Labelme标注工具安装
二、json文件批量执行转化
大家用到最多的就是 json文件的转化了,但是labelme自带转化工具,只能支持一次转化一个.json文件,所以需要修改代码,使得可以批量执行。
在lableme安装目录下有D:\Anaconda3\envs\labelme\Lib\site-packages\labelme\cli目录,可以看到json_to_dataset.py文件,将下面代码复制替换其中内容即可。
运行:
python D:\Anaconda3\envs\labelme\Scripts\labelme_json_to_dataset.exe I:\xj\Mask_RCNN_dataset\json
路径只需要输入到文件夹即可,不需要具体指定json文件。看你的根目录在哪里,就去哪里找输出文件,会生成一些跟.json同名的文件夹。
代码1、
import argparse
import json
import os
import os.path as osp
import warnings
import PIL.Image
import yaml
from labelme import utils
import base64
def main():
warnings.warn("This script is aimed to demonstrate how to convert the\n"
"JSON file to a single image dataset, and not to handle\n"
"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
if not osp.exists(out_dir):
os.mkdir(out_dir)
count = os.listdir(json_file)
for i in range(0, len(count)):
path = os.path.join(json_file, count[i])
if os.path.isfile(path):
data = json.load(open(path))
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 &