【labelme】labelme的json转换txt

6 篇文章 1 订阅
3 篇文章 0 订阅

labelme的json转换txt

背景

因项目中使用labelme工具标注可控性比较强,效果可能会更好,就使用了labelme,但是生成出来的是json文件,因为yolov5使用的是txt文件,所以进行了处理

具体代码

import os
import numpy as np
import json


def json2txt(path_json, path_txt):
    with open(path_json, 'r', encoding='gb18030') as path_json:
        jsonx = json.load(path_json)
        with open(path_txt, 'w+') as ftxt:
            for shape in jsonx['shapes']:
                xy = np.array(shape['points'])
                label = str(shape['label'])
                if label == 'QB' :
                    label = '0'
                elif label =='MAM':
                    label = '1'
                else:
                    label = '2'
                label += ' '
                strxy = ''
                for m, n in xy:
                    strxy += str(m) + ' ' + str(n) + ' '
                label += strxy
                ftxt.writelines(label + "\n")


dir_json = '/home/hfg/Desktop/image/ng_labelme/json/'
dir_txt = '/home/hfg/Desktop/image/ng_labelme/txt/'
if not os.path.exists(dir_txt):
    os.makedirs(dir_txt)
list_json = os.listdir(dir_json)
for cnt, json_name in enumerate(list_json):
    print('cnt=%d,name=%s' % (cnt, json_name))
    path_json = dir_json + json_name
    path_txt = dir_txt + json_name.replace('.json', '.txt')
    print(path_json, path_txt)
    json2txt(path_json, path_txt)

输出结果

在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: labelme json文件转换txt的步骤如下: 1. 打开labelme软件,选择要转换json文件,点击“Open”打开文件。 2. 在labelme软件中,选择“File”菜单下的“Export”选项,选择“Export to COCO format”选项。 3. 在弹出的对话框中,选择“Export to TXT format”选项,点击“Export”按钮。 4. 选择要保存的文件夹和文件名,点击“Save”按钮,即可将json文件转换txt文件。 注意:转换后的txt文件中,每一行代表一个目标物体的信息,包括目标物体的类别、坐标等信息。 ### 回答2: LabelMe是一个用于标注图像、视频和音频数据的工具,它是一个开源项目,支持多种数据格式,包括JSON(JavaScript Object Notation)格式。JSON是一种轻量级的数据交换格式,用于表示简单的数据结构和对象,因此,很多数据处理程序都可以方便地读取和解析JSON文件。 LabelMe生成的JSON文件包含了标注图像的所有信息,包括图像的名称、尺寸、标注的对象名称和位置等信息。为了方便后续处理,有时候需要将JSON文件转换成其他格式,如TXT(文本)格式。这可以通过一些编程语言中的JSON库实现,如Pythonjson模块。 转换JSONTXT的基本步骤如下: 1. 导入json模块和需要的库。 ``` import json import os ``` 2. 打开JSON文件并解析。 ``` with open('example.json', 'r') as f: data = json.load(f) ``` 3. 遍历JSON文件中的每个标注对象。 ``` for obj in data['objects']: ``` 4. 获取每个标注对象的位置和名称等信息。 ``` label = obj['label'] polygon = obj['polygon'] xmin = min([x[0] for x in polygon]) ymin = min([x[1] for x in polygon]) xmax = max([x[0] for x in polygon]) ymax = max([x[1] for x in polygon]) ``` 5. 将获取到的信息写入TXT文件。 ``` annotation = label + ' ' + str(xmin) + ' ' + str(ymin) + ' ' + str(xmax) + ' ' + str(ymax) with open('example.txt', 'a') as f: f.write(annotation + '\n') ``` 通过以上步骤,可以将LabelMe生成的JSON文件转换TXT格式,方便后续处理和分析。需要注意的是,转换的具体形式和细节可能因应用场景而异,需要根据实际需要进行调整。 ### 回答3: Labelme是一个开源的标注工具,可以用于图像标注。它可以生成JSON格式的标注文件,其中包含图像的标注信息。在一些需要使用标注信息的任务中,需要将JSON文件转换为其他格式,如TXT文件。 JSON文件转换TXT文件需要遵循以下步骤: 1. 解析JSON文件 使用Python语言中的json库,可以轻松地将JSON文件中的信息解析出来。使用类似下面的代码段可以读取JSON文件并解析其中的信息: ```python import json with open('labelme.json', 'r') as f: data = json.load(f) annotations = data['annotations'] ``` 其中,data是解析出来的JSON数据,annotations是包含标注信息的数据。 2. 处理标注信息 从JSON文件中解析出来的标注信息通常是一个列表,其中每个元素都是一个字典,包含标注框的位置和类别等信息。 需要将这些信息转换为所需的格式。例如,下面的代码段演示了如何将标注信息转换为YOLO格式的TXT文件: ```python with open('annotation.txt', 'w') as f: for annotation in annotations: x, y, w, h = annotation['bbox'] class_id = annotation['category_id'] width, height = data['imageSize'] normalized_x = x / width normalized_y = y / height normalized_w = w / width normalized_h = h / height f.write(f'{class_id} {normalized_x} {normalized_y} {normalized_w} {normalized_h}\n') ``` 该代码段将标注框的位置和类别信息转换为YOLO格式的TXT文件。其中,x、y、w、h是标注框的位置信息,class_id是标注的类别编号。width和height是图像的尺寸信息,用于将标注框的位置信息归一化为0~1之间的值。 3. 保存转换后的TXT文件 将标注信息转换为所需格式的TXT文件后,需要将其保存到磁盘中。可以使用Python中的文件操作函数将TXT文件写入磁盘中,如下所示: ```python with open('annotation.txt', 'w') as f: f.write(txt) ``` 以上是将Labelme格式的JSON文件转换TXT文件的步骤。需要注意的是,在进行转换时应保证所需格式的正确性,并根据具体任务调整转换流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crypto Ascetic

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值