LabelMe处理后打Json文件批量转Xml

本文提供了一段Python代码,用于将JSON格式的数据转换为XML格式。通过定义jsonToXml函数,实现了json数据到xml字符串的转换。此外,还提供了一个json_to_xml函数,用于批量处理目录下的所有json文件,将其转换并保存为xml文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import xmltodict
import json
import os


# json to xml
def jsonToXml(json_str):
    try:
        xml_str = ""
        xml_str = xmltodict.unparse(json_str, encoding='utf-8')
    except:
        xml_str = xmltodict.unparse({'request': json_str}, encoding='utf-8')
    finally:
        return xml_str


def json_to_xml(json_path, xml_path):
    if (os.path.exists(xml_path) == False):
        os.makedirs(xml_path)
    dir = os.listdir(json_path)
    for file in dir:
        file_list = file.split(".")
        with open(os.path.join(json_path, file), 'r') as load_f:
            load_dict = json.load(load_f)
        json_result = jsonToXml(load_dict)
        f = open(os.path.join(xml_path, file_list[0] + ".xml"), 'w', encoding="UTF-8")
        f.write(json_result)
        f.close()


if __name__ == '__main__':
    json_path = r"/home/zhang/下载/SEG_task/Annotation/O_11_json"  # 该目录为存放json文件的路径  ps:目录中只能存放json文件
    xml_path = r"/home/zhang/下载/SEG_task/Annotation/O_11_xml"  # 该目录为放xml文件的路径
    json_to_xml(json_path, xml_path)

 

### 将LabelMe JSON格式的标注文件换为VOC XML格式 #### 准备工作 为了实现从JSONXML换,需先安装`labelme`工具包。该工具提供了命令行接口来执行此操作。 ```bash pip install labelme ``` #### 使用命令行进行换 通过简单的命令可以直接完成单个或批量文件的换过程[^1]: 对于单一文件而言, ```bash labelme_json_to_dataset input.json -o output_dir/ ``` 而对于整个目录下的所有JSON文件,则可以使用如下指令一次性处理多个文件并按照标准结构创建相应的输出文件夹,其中包含annotations、JPEGImages以及ImageSets等子文件夹用于分类存储不同类型的文件[^2]: ```bash find /path/to/jsons -name "*.json" | xargs -I{} sh -c 'mkdir -p $(dirname {}/$(basename {} .json)); labelme_json_to_dataset {} -o $(dirname {}/$(basename {} .json))' ``` 需要注意的是上述方法适用于具有边界框信息的情况;如果仅存在关键点而不含矩形框时,可能需要额外编写脚本来补充这部分缺失的信息以便于后续模型训练需求[^3]。 #### Python代码示例 当然也可以利用Python编程的方式来进行更灵活的操作: ```python import os from labelme import utils as lbl_utils try: import pycocotools.mask except ImportError: print("pycocotools is not installed, please check your environment.") def json_to_xml(json_file_path,output_folder): data = lbl_utils.load_labelme_json(json_file_path) # 构建Pascal VOC格式的内容... pass # 这里省略具体构建逻辑 if __name__ == '__main__': root_dir='your/path/here' for filename in os.listdir(root_dir): if filename.endswith('.json'): json_to_xml(os.path.join(root_dir,filename),root_dir) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值