我安装的是新版本(4.5.6)的labelme,根据源码进行了修改,实现json数据的批量转换,输出到指定目录。

以下是针对labelme新版本实现批量json_to_dataset实现方法:

一、找到json_to_dataset.py

如下图所示,在labelme安装目录下找到json_to_dataset.py文件。

二、替换源码

将json_to_dataset.py中的内容替换为以下代码:

import argparse
import base64
import json
import os
import os.path as ospimport imgviz
import PIL.Imagefrom labelme.logger import logger
from labelme import utilsdef main():logger.warning("批量处理json文件。""注意!文件夹中不能有其他文件存在。")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.outif not osp.exists(out_dir):os.makedirs(out_dir)# 处理多个文件json_files_names = os.listdir(json_file)for i in range(0, len(json_files_names)):path = os.path.join(json_file, json_files_names[i])logger.info("正在处理: {}".format(path))if os.path.isfile(path):try:data = json.load(open(path, encoding='UTF-8'))except:data = json.load(open(path))if data['imageData']:imageData = data['imageData']else:imagePath = os.path.join(os.path.dirname(path), data['imagePath'])try:with open(imagePath, 'rb', encoding='UTF-8') as f:imageData = f.read(encoding='UTF-8')imageData = base64.b64encode(imageData).decode('utf-8')except: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_valuelbl, _ = 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] = namelbl_viz = imgviz.label2rgb(label=lbl, img=imgviz.asgray(img), label_names=label_names, loc="rb")# 新建路径save_dir = osp.join(out_dir,  json_files_names[i].split('.')[0])if not os.path.exists(save_dir):os.makedirs(save_dir)PIL.Image.fromarray(img).save(osp.join(save_dir, 'img.png'))utils.lblsave(osp.join(save_dir, 'label.png'), lbl)PIL.Image.fromarray(lbl_viz).save(osp.join(save_dir, 'label_viz.png'))with open(osp.join(save_dir, 'label_names.txt'), 'w') as f:for lbl_name in label_names:f.write(lbl_name + '\n')logger.info("Saved to: {}".format(save_dir))

三、运行转换程序

1、激活安装的labelme环境。

查看环境
conda info --envs
激活环境
activate labelme

2、打开cmd命令提示符窗口,然后cd到labelme环境下的Scripts目录。

cd D:\ProgramFiles\Anaconda3\envs\labelme\Scripts

或者,直接在Scripts目录下输入cmd,然后回车即可进去命令提示符窗口

3、在cmd中输入以下命令

labelme_json_to_dataset.exe 待处理的json文件夹路径 -o=输出路径

四、 查看转化结果

在自己给定的输出文件夹中可以看到每个json都相应生成一个文件夹,而文件夹中有如下四个文件:

labelme标注工具实现json标注数据批量转换相关推荐

  1. 如何把TXT数据批量转换成EAN-8商品条码

    EAN-8码和EAN-13一样都是商品条码,不同的是EAN-13码是标准商品条码,而EAN-8码商品条码的缩短码,如果产品的外包装面积小于120平方公分时才可以向国家物品编码中心申请EAN-8商品条码 ...

  2. 使用labelme标注工具制作图像分割标签数据

    labelme是一款python编写的用于图像检测.分割等神经网络标签数据制作的软件,可以实现点选形成闭合的多边形轮廓,并(批量)生成png标签图像的额功能,能够基本满足一般图像分割网络的需求. 1 ...

  3. 点云语义分割标注工具及生成训练数据

    1.软件的安装     (1)下载后随便你解压到那个文件夹下(软件github地址)     github链接     (2)在终端中运行: curl https://install.meteor.c ...

  4. NLP文本标注工具与平台(数据标注公司)

    最近在做NLP相关项目,包括句法分析.情感分析等,有大量数据需要标注.我评估了几个文本标注工具,也接触了几家数据标注公司和平台,总结如下,供各位参考. 文本标注平台(标注外包公司) 数据标注公司的工作 ...

  5. 数据集标注工具_如何提高数据标注质量,提供精细化标注数据集?丨曼孚科技...

    监督学习下的深度学习算法训练十分依赖于标注数据,然而目前数据标注行业在精细化运营方面仍有诸多不足. 相关数据显示,当下数据标注行业单次交付达标率低于50%,三次内交付达标率低于90%,远远不能满足AI ...

  6. 标注工具_语料标注工具(2)

    继续总结语料标注工具 3. BRAT BRAT虽然也是实体.实体关系.事件抽取的标注工具,但是中文里有人利用它标注了情感语料. 项目地址: http://brat.nlplab.org/introdu ...

  7. 免费AI标注工具-医疗影像标注工具

    医疗相关的AI产品对于相关公司和医院目前大多是冰火两重天的场景,一面是近些年积极研发.造势的AI相关公司的高涨热情,一面是医院使用率低.效果不佳的尴尬境遇,但对于医疗影像的AI相关产品的研究绝对不会止 ...

  8. dicom标注工具_免费AI标注工具-医疗影像标注工具

    医疗相关的AI产品对于相关公司和医院目前大多是冰火两重天的场景,一面是近些年积极研发.造势的AI相关公司的高涨热情,一面是医院使用率低.效果不佳的尴尬境遇,但对于医疗影像的AI相关产品的研究绝对不会止 ...

  9. 标注工具_语料标注工具(3)

    今天再详细介绍一下Prodigy工具和YEDDA工具. Prodigy工具 支持实体标注,分类标注,情感标注,但是都是英文的.有一个基于Prodigy的中文github项目.Prodigy官方项目地址 ...

最新文章

  1. 关于Flutter初始化流程,我必须告诉你的是...
  2. requestmapping配置页面后_@RequestMapping接口及页面乱码问题
  3. virtualvenv+django+uWSGI+nginx 部署 踩坑记录
  4. C++ Primer 第八章 标准IO库
  5. 黑马程序员-WEB前端与移动开发就业班
  6. 不买iPhone11的四大理由,最后一个扎心了
  7. Java多线程面试题总结,Java岗
  8. 【机器学习】隐马尔可夫模型及其三个基本问题(四)状态序列预测算法及python实现
  9. 无标度网络生成算法之简单轮盘算法
  10. koreader下载_Koreader —— Kindle 的 PDF 文档重排插件
  11. NR/5G - 一种TDD+FDD场景下Type I codebook size分析
  12. win10隐藏登入界面时的administrator账户
  13. 使用计算机有关的活动,有关计算机的活动策划书
  14. 转:有关Forth语言
  15. python2.7安装mysqldb_python2.7安装MySQLdb库
  16. 最低2000多,中国房价最低的30城,你会选择吗?
  17. 【MATLAB】读取和写入文本文件
  18. Qt游戏开发-深海危机
  19. Android studio安装配置
  20. 130个免费 微信小程序源码分享

热门文章

  1. php怎么取json数组元素个数,json,数组_取出json数据中的某一项组成一个数组?,json,数组,php - phpStudy...
  2. java html转换xml文件,使用Java在HTML中转换XML + XSL
  3. signature=d522a0024e7d20dbfee94b566a5dfed5,End-to-end (e2e) application packet flow visibility
  4. django3与vue3本地搭建
  5. python作用域(scope)(三分钟读懂)
  6. 洛谷P1031 均分纸牌(贪心)
  7. 洛谷 | P1605 迷宫(DFS) C++
  8. GPU服务器的配置计划
  9. 机器学习中二分类逻辑回归的学习笔记
  10. 【可行】adb修改手机代理方式