目录

准备工作:

1.安装anaconda

2.安装labelme

2.1创建labelme的环境

方法一:

1.将文件存入china文件夹下的taiwan文件夹中。

2.新建一个labelme2voc.py,将如下代码复制进去。

3.新建一个labels.txt文件,将你要标注的标签填入,如果不晓得咋整就把如下代码复制进去。

4.激活labelme的环境

5.切换路径至你的图片的存储路径:

6.打开labelme,且打开taiwan文件夹开始标注:

7.传入.json文件路径,执行转换

8.标注好的文件就在guizhou这个文件夹里面了

方法二:

1.在labelme安装目录下找到json_to_dataset.py文件

2.修改json_to_dataset.py文件

3.用第1步的方法找到labelme_json_to_dataset.exe文件

4.打开anaconda prompt,输入以下指令

4.1.如果有虚拟环境的进入(激活)虚拟环境:

4.2切换路径至步骤3的目录地址

4.3传入.json文件路径,执行转换

4.4标注好的文件在D:\ProgramData\Anaconda3\envs\labelm\Scripts文件夹里面


准备工作:

1.安装anaconda

先去清华镜像网站下载anaconda并将其安装anaconda,安装在d盘下的program目录下面。

然后必须要勾选添加环境变量,不然安装好后要手动添加。

2.安装labelme

2.1创建labelme的环境

打开anaconda powershell prompt,输入python -V查看python的版本,从下图可以看到本人的python是3.8版本。

然后输入指令:conda create --name=labelme python=3.8

输入y 后,会自己下载了。

方法一:

1.将文件存入china文件夹下的taiwan文件夹中。

2.新建一个labelme2voc.py,将如下代码复制进去。

#!/usr/bin/env pythonfrom __future__ import print_functionimport argparse
import glob
import os
import os.path as osp
import sysimport imgviz
import numpy as npimport labelmedef main():parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)parser.add_argument("input_dir", help="input annotated directory")parser.add_argument("output_dir", help="output dataset directory")parser.add_argument("--labels", help="labels file", required=True)parser.add_argument("--noviz", help="no visualization", action="store_true")args = parser.parse_args()if osp.exists(args.output_dir):print("Output directory already exists:", args.output_dir)sys.exit(1)os.makedirs(args.output_dir)os.makedirs(osp.join(args.output_dir, "JPEGImages"))os.makedirs(osp.join(args.output_dir, "SegmentationClass"))os.makedirs(osp.join(args.output_dir, "SegmentationClassPNG"))if not args.noviz:os.makedirs(osp.join(args.output_dir, "SegmentationClassVisualization"))print("Creating dataset:", args.output_dir)class_names = []class_name_to_id = {}for i, line in enumerate(open(args.labels).readlines()):class_id = i - 1  # starts with -1class_name = line.strip()class_name_to_id[class_name] = class_idif class_id == -1:assert class_name == "__ignore__"continueelif class_id == 0:assert class_name == "_background_"class_names.append(class_name)class_names = tuple(class_names)print("class_names:", class_names)out_class_names_file = osp.join(args.output_dir, "class_names.txt")with open(out_class_names_file, "w") as f:f.writelines("\n".join(class_names))print("Saved class_names:", out_class_names_file)for filename in glob.glob(osp.join(args.input_dir, "*.json")):print("Generating dataset from:", filename)label_file = labelme.LabelFile(filename=filename)base = osp.splitext(osp.basename(filename))[0]out_img_file = osp.join(args.output_dir, "JPEGImages", base + ".jpg")out_lbl_file = osp.join(args.output_dir, "SegmentationClass", base + ".npy")out_png_file = osp.join(args.output_dir, "SegmentationClassPNG", base + ".png")if not args.noviz:out_viz_file = osp.join(args.output_dir,"SegmentationClassVisualization",base + ".jpg",)with open(out_img_file, "wb") as f:f.write(label_file.imageData)img = labelme.utils.img_data_to_arr(label_file.imageData)lbl, _ = labelme.utils.shapes_to_label(img_shape=img.shape,shapes=label_file.shapes,label_name_to_value=class_name_to_id,)labelme.utils.lblsave(out_png_file, lbl)np.save(out_lbl_file, lbl)if not args.noviz:viz = imgviz.label2rgb(label=lbl,img=imgviz.rgb2gray(img),font_size=15,label_names=class_names,loc="rb",)imgviz.io.imsave(out_viz_file, viz)if __name__ == "__main__":main()

3.新建一个labels.txt文件,将你要标注的标签填入,如果不晓得咋整就把如下代码复制进去。

__ignore__
_background_
aeroplane
bicycle
bird
boat
bottle
bus
car
cat
chair
cow
diningtable
dog
horse
motorbike
person
potted plant
sheep
sofa
train
foot
eyes
head
tv/monitor

然后文件结构就变成了这个样子:

4.激活labelme的环境

输入指令:conda activate labelme,最前面的(base),变成了(labelme)

5.切换路径至你的图片的存储路径:

cd desktop/china

6.打开labelme,且打开taiwan文件夹开始标注:

labelme taiwan --labels labels.txt --nodata --validatelabel exact --config '{shift_auto_shape_color: -2}'

7.传入.json文件路径,执行转换

./labelme2voc.py taiwan  guizhou  --labels labels.txt

其中taiwan是装图片的文件夹,guizhou是放标注的文件夹,config后面和-2前面都有空格

8.标注好的文件就在guizhou这个文件夹里面了

方法二:

1.在labelme安装目录下找到json_to_dataset.py文件

情况一:anaconda的安装环境是默认的安装目录且没有给labelme一个虚拟环境情况下:

C:\ProgramData\Anaconda3\Lib\site-packages\labelme\cli

情况二:anaconda的安装环境是默认的安装目录但是给labelme创建了一个虚拟环境情况下:C:\ProgramData\Anaconda3\envs\labelme\Lib\site-packages\labelme\cli

情况三:anaconda的安装环境不是默认的安装目录且没有给labelme一个虚拟环境情况下:

你安装的anocanda的地方\Anaconda3\Lib\site-packages\labelme\cli

情况四:anaconda的安装环境不是默认的安装目录但是给labelme创建了一个虚拟环境情况下:

需要找到ananonda安装目录下的envs文件夹中的虚拟环境文件,本人的就是:

D:\ProgramData\Anaconda3\envs\labelme\Lib\site-packages\labelme\cli

2.修改json_to_dataset.py文件

将json_to_dataset.py文件里的所以代码替换为以下代码

import argparse
import json
import os
import os.path as osp
import warningsimport PIL.Image
import yamlfrom labelme import utils
import base64def 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_fileif 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.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 = {'_background_': 0}for shape in data['shapes']: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# label_values must be denselabel_values, label_names = [], []for ln, lv in sorted(label_name_to_value.items(), key=lambda x: x[1]):label_values.append(lv)label_names.append(ln)assert label_values == list(range(len(label_values)))lbl = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)captions = ['{}: {}'.format(lv, ln)for ln, lv in label_name_to_value.items()]lbl_viz = utils.draw_label(lbl, img, captions)out_dir = osp.basename(count[i]).replace('.', '_')out_dir = osp.join(osp.dirname(count[i]), out_dir)if not osp.exists(out_dir):os.mkdir(out_dir)PIL.Image.fromarray(img).save(osp.join(out_dir, 'img.png'))#PIL.Image.fromarray(lbl).save(osp.join(out_dir, 'label.png'))utils.lblsave(osp.join(out_dir, 'label.png'), lbl)PIL.Image.fromarray(lbl_viz).save(osp.join(out_dir, 'label_viz.png'))with open(osp.join(out_dir, 'label_names.txt'), 'w') as f:for lbl_name in label_names:f.write(lbl_name + '\n')warnings.warn('info.yaml is being replaced by label_names.txt')info = dict(label_names=label_names)with open(osp.join(out_dir, 'info.yaml'), 'w') as f:yaml.safe_dump(info, f, default_flow_style=False)print('Saved to: %s' % out_dir)
if __name__ == '__main__':main()

3.用第1步的方法找到labelme_json_to_dataset.exe文件

情况一:anaconda的安装环境是默认的安装目录且没有给labelme一个虚拟环境情况下:

C:\ProgramData\Anaconda3\labelme\Scripts

情况二:anaconda的安装环境是默认的安装目录但是给labelme创建了一个虚拟环境情况下:C:\ProgramData\Anaconda3\envs\labelme\Scripts

情况三:anaconda的安装环境不是默认的安装目录且没有给labelme一个虚拟环境情况下:

你安装的anocanda的地方\Anaconda3\labelme\Scripts打开anaconda prompt,激活虚拟环境

情况四:anaconda的安装环境不是默认的安装目录但是给labelme创建了一个虚拟环境情况下:

需要找到ananonda安装目录下的envs文件夹中的虚拟环境文件,本人的就是:

D:\ProgramData\Anaconda3\envs\labelm\Scripts

4.打开anaconda prompt,输入以下指令

4.1.如果有虚拟环境的进入(激活)虚拟环境:

输入命令:

activate labelme

4.2切换路径至步骤3的目录地址

4.2.1因为本人的anaconda安装在了D盘所以得先将路径从C盘切换到D盘(如果你的anaconda安装在c盘这步就不需要):

输入命令:

d:

注意:如果你的anaconda不是安装在c盘你执行4.2.1的命令,而是直接执行4.2.3的命令,那你就会出现下面的错误:

4.2.2本人的步骤3的路径是D:\ProgramData\Anaconda3\envs\labelm\Scripts

所以,我的命令是:

cd D:\ProgramData\Anaconda3\envs\labelm\Scripts

注意:此处直接复制就报错,必须要cd 自己打,然后复制路径进去才对

4.3传入.json文件路径,执行转换

注意:此处的.json文件必须是将所有需要转化的json文件保存在一个只有json文件的目录下,不可以像下图这种是不对的。

下图这种才可以: 

然后输入命令:

labelme_json_to_dataset.exe  +你放的json文件的目录

本人的是:

labelme_json_to_dataset.exe  D:\demo\json

4.4标注好的文件在D:\ProgramData\Anaconda3\envs\labelm\Scripts文件夹里面

实现labelme批量json_to_dataset方法(anaconda)相关推荐

  1. 实现labelme批量json_to_dataset方法

    labelme可以帮助我们快速的实现Mask-RCNN中数据集json文件的生成,然而还需要我们进一步的将json转成dataset,可以直接在cmd中执行labelme_json_to_datase ...

  2. labelme批量json_to_dataset转换

    之前写过的一篇博客,https://blog.csdn.net/yql_617540298/article/details/81110685,发现朋友遇到了好多问题. 刚好,我换了电脑之后,还没有安装 ...

  3. Labelme 批量转 dataset 使用 labelme_json_to_dataset 命令 (简明图文教程)

    Labelme 批量转 dataset 0.概述 1.原理 2.代码 3.试验过程 3.1 实验一:输入单个目录 3.2 实验二: 增加参数 --out 输出文件目录 4.方法二 4.1 重新创建虚拟 ...

  4. 超详细labelme批量处理json文件,json_to_dataset方法

    labelme批量处理json文件,json_to_dataset方法 第一步:找到json_to_dataset.py文件 第二步修改json_to_dataset.py文件 第三步找到labelm ...

  5. labelme批量转换json

    安装:https://mp.csdn.net/postedit/80924918 使用:https://github.com/wkentaro/labelme 单张转换: labelme_json_t ...

  6. labelme的json_to_dataset.py文件路径

    遇到labelme批量json转png需要修改json_to_dataset.py文件: 但是根据网上教程,根本找不到labelme的json_to_dataset.py. 后来,我在终端中发现了它的 ...

  7. win2008r2 AD用户账户的批量导入方法

    win2008r2 AD用户账户的批量导入方法 http://www.jb51.net/article/38423.htm 转载于:https://www.cnblogs.com/cl1024cl/p ...

  8. 分享免费的主流电商平台商品图片批量下载方法

    最近一个新入行的微商MM找我帮忙,她正在优选商品,让我帮她下载她所看上的某巴巴和某宝上的每个商品的图片,基本需求是:看上哪个商品,就批量把该商品的所有介绍图片下载回来进行二次筛选处理. 需求不复杂,但 ...

  9. 批量删除html网页,ie浏览器收藏夹网页批量删除方法

    ie浏览器收藏夹网页批量删除方法 ie浏览器收藏夹网页怎么批量删除?有时候我们重装系统不经意选择了ghost版本安装,安装好以后发现里面的IE浏览器居然也是显示收藏夹栏的,而且收藏夹上面收藏了各种购物 ...

最新文章

  1. 使用windbg抓取崩溃文件和分析的过程
  2. [技术文档] 一劳永逸,用USB设备制作多系统引导
  3. android读取raw文件示例
  4. 转MQTT SERVER 性能测试报告
  5. Spring Session Redis——自定义JSON序列化解决方案
  6. c枚举类型enum例题_SystemVerilog数据类型
  7. mysql 8服务配置文件my.ini 不生效_2、mysql的启动选项和配置文件介绍
  8. 32 FI配置-财务会计-应收账款和应付账款-定义客户预付款的统驭科目
  9. 2021年初行政区划数据
  10. itools苹果录屏大师_如何录制ZOOM视频会议?实用的录屏软件
  11. plc应用与c语言编程区别,PLC编程与应用入门基础知识
  12. 游艇床垫MED认证证书/床垫Wheel Mark舵轮标识认证
  13. C++实现各种进制转换
  14. 大学计算机课程教学建议,计算机应用基础课程教学的建议
  15. Java就业方向有哪些?
  16. 全新 OceanBase 社区版开发者中心 ODC 核心功能解读
  17. 多系统折腾记录(老电脑MBR分区)
  18. 2023年全国最新二级建造师精选真题及答案26
  19. 微信小程序 17 个人中心和登录 的跳转
  20. linux开发板lcd按压,嵌入式Linux裸机开发(十五)——LCD

热门文章

  1. 雷电2接口_中国连城 | 总结关于USB、TypeC、雷电接口的冷知识
  2. 可ping通主机而不能连上主机端口的一般原因
  3. python入门教程 傻瓜_python傻瓜教程
  4. 小计 合计 总计 共计 怎么解释?
  5. 计算机机房一般在几楼,21层的楼房设备层一般在几楼
  6. HttpClient 爬取百度图片
  7. winform程序内存不足或假死的问题
  8. 科普“知识共享”严重缺失,国内亟待补课
  9. python五分制转分数档_五分制绩点换算四分制(5.0绩点计算器在线)
  10. 百度迁徙大数据整理[2020+2019同期]