【YOLO】voc(xml格式)转换成coco(json格式)代码

这段Python代码将一个文件夹下的所有JSON文件转换成特定格式,提取原文件的特定字段并进行结构化处理,主要涉及XML到OrderedDict转换、数据重构及JSON写入。
部署运行你感兴趣的模型镜像

这段代码的功能是将一个文件夹下的所有JSON文件转换为一个特定格式的JSON文件,转换后的JSON文件中包含了原JSON文件中的某些字段,并将其它字段按照一定的格式进行转换。

# 导入必要的库
import xmltodict
import json
import os

# 输入和输出文件夹路径
input_folder_path = 'json'
output_folder_path = 'json_2'

# 遍历输入文件夹中的所有文件
for filename in os.listdir(input_folder_path):
    if filename.endswith('.json'):
        # 构造输入和输出文件路径
        input_file_path = os.path.join(input_folder_path, filename)
        output_file_path = os.path.join(output_folder_path, filename.replace('.json', '.json'))

        # 打开输入文件并将其解析为OrderedDict对象
        with open(input_file_path, 'r', encoding='utf-8') as input_file:
            xml_data = input_file.read()
            data_dict = xmltodict.parse(xml_data)

        # 进行数据转换
        anylabeling = {
            "version": "0.2.11",
            "flags": {},
            "shapes": [
                {
                    "label": data_dict["annotation"]["object"]["name"],
                    "text": "",
                    "points": [
                        [
                            data_dict["annotation"]["object"]["bndbox"]["xmin"],
                            data_dict["annotation"]["object"]["bndbox"]["ymin"]
                        ],
                        [
                            data_dict["annotation"]["object"]["bndbox"]["xmax"],
                            data_dict["annotation"]["object"]["bndbox"]["ymax"]
                        ]
                    ],
                    "group_id": None,
                    "shape_type": "rectangle",
                    "flags": {}
                }
            ],
            "imagePath": data_dict["annotation"]["filename"],
            "imageData": None,
            "imageHeight": data_dict["annotation"]["size"]["height"],
            "imageWidth": data_dict["annotation"]["size"]["width"]
        }

        # 将数据写入输出文件
        with open(output_file_path, 'w', encoding='utf-8') as output_file:
            json.dump(anylabeling, output_file, indent=4)
  1. import导入了三个Python标准库和一个第三方库:
  • xmltodict:用于将XML数据转换为Python的OrderedDict对象;
  • json:用于将Python对象序列化为JSON格式的字符串;
  • os:用于操作操作系统相关的功能,如路径等;
  1. 然后定义了两个字符串变量input_folder_pathoutput_folder_path,分别表示输入和输出文件夹路径;
  2. 使用os.listdir()函数遍历输入文件夹中的所有文件,并使用if语句过滤出.json文件;
  3. 对于每个.json文件,构造了输入和输出文件的路径,分别使用os.path.join()replace()函数;
  4. 使用with语句打开输入文件,并使用xmltodict.parse()函数将XML数据解析为Python的OrderedDict对象,存储在data_dict变量中;
  5. 定义一个Python字典对象anylabeling,该对象表示特定格式的JSON数据。该字典包含以下字段:

flags:一个空字典,表示标记的额外信息;

  • shapes:一个包含一个字典元素的列表,表示要标记的图形信息;
  • imagePath:字符串类型,表示图片文件的路径;
  • imageData:None类型,表示图片的二进制数据;
  • imageHeight:整数类型,表示图片的高度;
  • imageWidth:整数类型,表示图片的宽度。
  • label:字符串类型,表示标记的名称;
  • text:字符串类型,表示标记的文本信息;
  • points:一个包含两个列表元素的列表,每个列表元素表示一个点的坐标(x, y);
  • group_id:None类型,表示分组信息;
  • shape_type:字符串类型,表示标记的形状类型;
  • flags:一个空字典,表示标记的额外信息;

data_dict中的信息填充到anylabeling中,包括图片的文件名、宽度、高度、标记的名称和位置信息;

使用with语句打开输出文件,并使用json.dump()函数将anylabeling对象序列化为JSON格式的字符串,保存到输出文件中;

当遍历完所有的.json文件时,程序结束运行。

 

 

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小范好好学习

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值