Python将Json文件内容转为VOC中的XML文件

Python将Json文件内容转为VOC中的XML文件

  • 前提条件
  • 相关介绍
  • 实验环境
  • Json文件内容转为VOC中的XML文件
    • Json文件内容
    • 代码实现
    • 输出结果

前提条件

  • 熟悉Python基本语法
  • 熟悉Python OS模块
  • 熟悉Python3 JSON 数据解析

相关介绍

  • Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
  • Python OS模块提供了非常丰富的方法用来处理文件和目录。
  • Python JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。
  • 实验目标:Python将Json文件内容转为VOC中的XML文件

实验环境

  • Python 3.x (面向对象的高级语言)

Json文件内容转为VOC中的XML文件

Json文件内容

Python将Json文件内容转为VOC中的XML文件_第1张图片

代码实现

# -*- coding: utf-8 -*-
"""
Created on 2022/02/25 10:00
@author: TFX
"""
import os
import json

path = r"citypersons_all_train.json"
file = open(path, "rb")
data = json.load(file)
img_list = data["images"]
annotations_list = data["annotations"]

new_xml=r"Annotations"
if not os.path.isdir(new_xml):
    os.makedirs(new_xml) 

for i in img_list:
	img_name = i["file_name"].split("/")[1]
	width, height = i["width"],i["height"]

	xml_name=img_name.split('.')[0]
	xml_file = open((new_xml + '\\' + xml_name + '.xml'), 'w')

	xml_file.write('\n')
	xml_file.write('    citysperson\n')
	xml_file.write('    ' + str(img_name)+ '\n')
	xml_file.write('    \n')
	xml_file.write('        ' + str(width) + '\n')
	xml_file.write('        ' + str(height) + '\n')
	xml_file.write('        3\n')
	xml_file.write('    \n')
	
	for j in annotations_list:
		if i['id']==j['image_id']:
			x,y,w,h=j['bbox']

			xml_file.write('    \n')
			xml_file.write('        ' + 'person' + '\n')
			xml_file.write('        Unspecified\n')
			xml_file.write('        0\n')
			xml_file.write('        0\n')
			xml_file.write('        \n')
			xml_file.write('            ' + str(x) + '\n')
			xml_file.write('            ' + str(y) + '\n')
			xml_file.write('            ' + str(x+w) + '\n')
			xml_file.write('            ' + str(y+h) + '\n')
			xml_file.write('        \n')
			xml_file.write('    \n')
	xml_file.write('\n')

输出结果

Python将Json文件内容转为VOC中的XML文件_第2张图片

<annotation>
    <folder>cityspersonfolder>
    <filename>aachen_000000_000019_leftImg8bit.pngfilename>
    <size>
        <width>497width>
        <height>249height>
        <depth>3depth>
    size>
    <object>
        <name>personname>
        <pose>Unspecifiedpose>
        <truncated>0truncated>
        <difficult>0difficult>
        <bndbox>
            <xmin>216.5646266686439xmin>
            <ymin>108.0395278784154ymin>
            <xmax>221.66312124268148xmax>
            <ymax>120.90715704146263ymax>
        bndbox>
    object>
    <object>
        <name>personname>
        <pose>Unspecifiedpose>
        <truncated>0truncated>
        <difficult>0difficult>
        <bndbox>
            <xmin>218.74969577180286xmin>
            <ymin>107.5539569666023ymin>
            <xmax>227.0044012726256xmax>
            <ymax>120.90715704146263ymax>
        bndbox>
    object>
    <object>
        <name>personname>
        <pose>Unspecifiedpose>
        <truncated>0truncated>
        <difficult>0difficult>
        <bndbox>
            <xmin>447.6963806916809xmin>
            <ymin>105.85445877525643ymin>
            <xmax>458.37894075156913xmax>
            <ymax>131.58971710135089ymax>
        bndbox>
    object>
    <object>
        <name>personname>
        <pose>Unspecifiedpose>
        <truncated>0truncated>
        <difficult>0difficult>
        <bndbox>
            <xmin>248.85509230421525xmin>
            <ymin>52.19887301990856ymin>
            <xmax>255.6530850695987xmax>
            <ymax>60.45357852073131ymax>
        bndbox>
    object>
annotation>

你可能感兴趣的:(Python,python,json,xml)