代码

# --------------------------------------------------------
# Written by YuTing Zhang, based on python
# json file transform to xml file automatically
# --------------------------------------------------------
import json
import osheadstr = """\
<annotation><folder>VOC</folder><filename>%s</filename><path>zhangyt</path><source><database>My Database</database></source><size><width>%d</width><height>%d</height><depth>%d</depth></size><segmented>0</segmented>
"""
objstr = """\<object><name>%s</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>%d</xmin><ymin>%d</ymin><xmax>%d</xmax><ymax>%d</ymax></bndbox></object>
"""tailstr = '''\
</annotation>
'''def write_xml(anno_path,head, objs, tail):f = open(anno_path, "w")f.write(head)for obj in objs:f.write(objstr%(obj[0],obj[1],obj[2],obj[3],obj[4]))f.write(tail)def json_to_xml(json_path,xml_path):if not os.path.exists(xml_path):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)asset = load_dict["asset"]regions = load_dict["regions"]#headstrfilename = asset["name"]width = asset["size"]["width"]height = asset["size"]["height"]depth =  3if "png" in filename:xml_name = filename.replace("png", "xml")elif "jpg" in filename:xml_name = filename.replace("jpg", "xml")head=headstr % (filename, width, height, depth)#objstrdataset = []for region in regions:print(region)name = region["tags"][0]# print(name)boundingBox = region["boundingBox"]print(boundingBox)xmin = boundingBox["left"]ymin = boundingBox['top']xmax = xmin + boundingBox["width"]ymax = ymin + boundingBox["height"]dataset.append([name, xmin, ymin, xmax, ymax])tail = tailstrwrite_xml(os.path.join(xml_path, xml_name),head, dataset, tail)if __name__ == '__main__':json_path="Helm500_res/"  #该目录为存放json文件的路径  xml_path="Helm500_res/voc_annotation"   #该目录为放xml文件的路径json_to_xml(json_path,xml_path)

json文件

{"asset": {"format": "png","id": "00a232ba6c87727cccd3466624f2f26f","name": "vlcsnap-2020-06-16-14h28m31s653.png","path": "file:D:/%E7%AE%97%E6%B3%95%E6%95%B0%E6%8D%AE/tasks/Helm500/vlcsnap-2020-06-16-14h28m31s653.png","size": {"width": 640,"height": 360},"state": 2,"type": 1},"regions": [{"id": "Ue8qq4rhM","type": "RECTANGLE","tags": ["helmet_on"],"boundingBox": {"height": 20.95432959232234,"width": 18.024723477640343,"left": 548.902012963844,"top": 317.2385805391418},"points": [{"x": 548.902012963844,"y": 317.2385805391418},{"x": 566.9267364414843,"y": 317.2385805391418},{"x": 566.9267364414843,"y": 338.1929101314642},{"x": 548.902012963844,"y": 338.1929101314642}]},{"id": "0DlBLBCWC","type": "RECTANGLE","tags": ["person"],"boundingBox": {"height": 46.65991148972875,"width": 54.074244766888675,"left": 516.74974726451,"top": 313.3400885102713},"points": [{"x": 516.74974726451,"y": 313.3400885102713},{"x": 570.8239920313987,"y": 313.3400885102713},{"x": 570.8239920313987,"y": 360.00000000000006},{"x": 516.74974726451,"y": 360.00000000000006}]},{"id": "gtACiHR0v","type": "RECTANGLE","tags": ["person"],"boundingBox": {"height": 90.81534249441964,"width": 27.580803134182176,"left": 354.03721076150833,"top": 214.97299460168497},"points": [{"x": 354.03721076150833,"y": 214.97299460168497},{"x": 381.6180138956905,"y": 214.97299460168497},{"x": 381.6180138956905,"y": 305.7883370961046},{"x": 354.03721076150833,"y": 305.7883370961046}]}],"version": "2.1.0"
}

xml文件

<annotation><folder>VOC</folder><filename>vlcsnap-2020-06-16-14h28m31s653.png</filename><path>zhangyt</path><source><database>My Database</database></source><size><width>640</width><height>360</height><depth>3</depth></size><segmented>0</segmented><object><name>helmet_on</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>548</xmin><ymin>317</ymin><xmax>566</xmax><ymax>338</ymax></bndbox></object><object><name>person</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>516</xmin><ymin>313</ymin><xmax>570</xmax><ymax>360</ymax></bndbox></object><object><name>person</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>354</xmin><ymin>214</ymin><xmax>381</xmax><ymax>305</ymax></bndbox></object>
</annotation>

python将json数据集转成voc xml文件相关推荐

  1. CrowdHuman数据集转成VOC格式并训练模型

    CrowdHuman数据集转成VOC格式并训练模型 1. 介绍 The CrowdHuman dataset is large, rich-annotated and contains high di ...

  2. INRIA数据集转换成VOC格式

    背景 下面的代码是将INRIA数据集转换成VOC格式.图片是614张. 其中,使用OinginImage文件夹里的Train中Pos和Annotations作为训练,利用Test里的Pos作为测试. ...

  3. python将源代码转换成在html可显示的格式,Python实现将HTML转换成doc格式文件的方法示例...

    Python实现将HTML转换成doc格式文件的方法示例 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python实现将HTML转换成doc格式文件的方法示例. ...

  4. 小技巧(5):将TT100K数据集转成VOC格式,并且用Python脚本选出45类超过100张的图片和XML

    上一篇:小技巧(4):将txt中的某两列数据写入csv文件中,制作图像分类标签 文章目录 一.相关准备 1.1 下载数据集 1.2 下载代码文件 1.3 将相关文件移入代码文件 二.创建标准的VOC文 ...

  5. DAGM2007数据集转换成VOC格式

    DAGM2007数据集-to-缺陷数据集VOC格式 DAGM2007数据集下载 数据集简单介绍 转换代码 转换结果 DAGM2007数据集下载 链接: DAGM2007. 下载后把每一类的压缩包解压放 ...

  6. Caltech 数据集转换成VOC格式

    注意本人用pycharm 运行环境是python2.7.14 如果是python3 可能会存在错误 1. Seq文件转化成JEPG图像文件() 运行seq2jpg.py文件,输入.seq文件夹,输出到 ...

  7. python 将目下的excel全部转xml文件到指定的目录

    我们现在来实现将某个目录下的所有excel文件转成xml文件到指定的目录中.新生成的xml文件名称使用excel文件名. 当然这个的前提得会解析excel文件,上一篇文章说了python如何解析exc ...

  8. python大神-Python大神都是这样处理XML文件的!

    最近有同学询问如何利用Python处理xml文件,特此整理一个比较简洁的操作手册,供大家参阅. 首先准备一个xml文件,xml中的内容如下所示.存储为:student.xml 如果要获取这个xml里面 ...

  9. python xmlns 解析_使用python读取标记中包含xmlns的XML文件

    我试图从xml文件中读取一个元素来添加新元素. 我试图找到的标签包含xmlns. 它看起来像这样: 我的python代码如下所示: import xml.etree.ElementTree as xm ...

最新文章

  1. python在什么系统中开发_Python虚拟开发环境,怎样才能在系统中创建
  2. 《腾讯传》读后感一——时势造英雄
  3. RabbitMQ+PHP 教程六(RPC)
  4. 程序员面试技巧:如何讲解自己做过的项目
  5. [POJ2406]字符串的幂
  6. 数论——同余和费马小定理
  7. amd opencl使用低版本驱动
  8. 个性化的CRM具备的功能有哪些
  9. Window 错误代码大全
  10. 统计学中p值计算公式_P值计算公式
  11. 关于intelCPU缓存行,以及伪共享问题
  12. python3代码-【Python】Python3纯代码极简教程
  13. 用HTML+CSS做一个漂亮简单大学生校园班级网页
  14. Flash ANE打包
  15. 自建图床之一:使用幻想领域搭建免费新浪图床网站
  16. java锁的种类以及辨析(一):自旋锁
  17. 学习Flask之blueprint
  18. 设计模式六大原则之--里氏替代原则(LSP)
  19. Java实现简单的贪吃蛇
  20. 第3章-22 输出大写英文字母 (15分)

热门文章

  1. node开发命令行脚本
  2. 用canvas实现手写签名功能
  3. C# 打开文件 保存文件
  4. Linux常用到的指令汇总
  5. Spring结合Quartz实现多任务定时调用(转载)
  6. python爬虫2——下载文件(中华网图片库下载)
  7. WIN7下运行hadoop程序报:Failed to locate the winutils binary in the hadoop binary path
  8. paip.性能跟踪profile原理与架构与本质-- python扫带java php
  9. 02-01 Python 安装与pip
  10. graphics | 基础绘图系统(四)——柱状图、直方图、扇形图、箱形图和函数图象...