github链接,里面有我最近写的一些标签的转换脚本

这是一份将json格式的数据集标签转为xml类型标签的脚本,供大家参考
先说下我的应用场景:天池街景识别提供的json文件,用于制作VOC格式数据集。
json文件打开如下图:

其中包含以下5个参数:

VOC数据集标签格式:

<annotation>  <folder>VOC2012</folder>                             <filename>2007_000392.jpg</filename>             //文件名  <source>                                        //图像来源(不重要)  <database>The VOC2007 Database</database>  <annotation>PASCAL VOC2007</annotation>  <image>flickr</image>  </source>  <size>                     //图像尺寸(长宽以及通道数)                        <width>500</width>  <height>332</height>  <depth>3</depth>  </size>  <segmented>1</segmented>            //是否用于分割(在图像物体识别中01无所谓)  <object>                           //检测到的物体  <name>horse</name>             //物体类别  <pose>Right</pose>            //拍摄角度  <truncated>0</truncated>       //是否被截断(0表示完整)  <difficult>0</difficult>        //目标是否难以识别(0表示容易识别)  <bndbox>                      //bounding-box(包含左下角和右上角xy坐标)  <xmin>100</xmin>  <ymin>96</ymin>  <xmax>355</xmax>  <ymax>324</ymax>  </bndbox>  </object>  <object>              //检测到多个物体  <name>person</name>  <pose>Unspecified</pose>  <truncated>0</truncated>  <difficult>0</difficult>  <bndbox>  <xmin>198</xmin>  <ymin>58</ymin>  <xmax>286</xmax>  <ymax>197</ymax>  </bndbox>  </object>
</annotation>

按照此格式编写自己的脚本(对应的图像数据集,需要准备json文件,xml存储路径):
按照此脚本自己按需求改!

# -*- coding: utf-8 -*-
"""
Created on Thu April 8 20:30:10 2021
@author: WU-JL
"""import os
import json
import cv2
import codecs
try: import xml.etree.cElementTree as ET
except ImportError: import xml.etree.ElementTree as ET def json_to_xml(image_path,json_path,save_path):if not os.path.exists(save_path):os.mkdir(save_path)data = json.load(open(json_path))for key in data:img = cv2.imread(image_path+key)img_width=img.shape[1]img_height=img.shape[0]img_depth=img.shape[2]label = data[key]['label']left = data[key]['left']top = data[key]['top']height = data[key]['height']width = data[key]['width']with codecs.open(save_path + key[0:-4] + '.xml', 'w', 'utf-8') as xml:xml.write('\n')xml.write('<annotation>')xml.write('\t<folder>' + "Annotation" + '</folder>\n')xml.write('\t<filename>' + key + '</filename>\n')xml.write('\t<path>')xml.write('path not record')xml.write('\t</path>')xml.write('\t<source>\n')xml.write('\t\t<database>' + 'Unknown' + '</database>\n')xml.write('\t</source>')xml.write('\t<size>\n')xml.write('\t\t<width>' + str(img_width) + '</width>\n')xml.write('\t\t<height>' + str(img_height) + '</height>\n')xml.write('\t\t<depth>' + str(img_depth) + '</depth>\n')xml.write('\t</size>\n')xml.write('\t\t<segmented>0</segmented>\n')for i in range(len(label)):xmin = str(left[i])ymin = str(top[i])xmax = str(left[i] + width[i])ymax = str(top[i] + height[i])label_obj= str(label[i])xml.write('\t<object>\n')xml.write('\t\t<name>' + label_obj+ '</name>\n')xml.write('\t\t<pose>Unspecified</pose>\n')xml.write('\t\t<truncated>0</truncated>\n')xml.write('\t\t<difficult>0</difficult>\n')xml.write('\t\t<bndbox>\n')xml.write('\t\t\t<xmin>' + xmin + '</xmin>\n')xml.write('\t\t\t<ymin>' + ymin + '</ymin>\n')xml.write('\t\t\t<xmax>' + xmax + '</xmax>\n')xml.write('\t\t\t<ymax>' + ymax + '</ymax>\n')xml.write('\t\t</bndbox>\n')xml.write('\t</object>\n')xml.write('</annotation>')xml.close()print('json->xml  Done.')
json_to_xml('./images/','./mchar.json','./xml/')

结果:

json标签批量转为xml标签(VOC数据集制作)相关推荐

  1. python 标签数量_python实现的批量分析xml标签中各个类别个数功能示例

    本文实例讲述了python实现的批量分析xml标签中各个类别个数功能.分享给大家供大家参考,具体如下: 文章目录 需要个脚本分析下各个目标的数目 顺带练习下多进程,自用,直接上代码: # -*- co ...

  2. 比赛中学习(2)-voc数据集制作中将.txt文件变为.xml文件

    描述 和voc数据集制作有一点不同的是,因为参加的比赛中坐标给了4个,也就是说目标的形状可能是是平行四边形.所以和voc数据集有点不同啊.放出一张.txt文件的形式 最后的结果大致是这样的(和上面的图 ...

  3. json文件批量转为txt文件

    json文件批量转为txt文件 1 批量json标注文件: 2 json所对应的各个图片: 3 每个json文件内容: [{"type": 1,"x": 116 ...

  4. 图像分割标签制作,json批量转为png标签 ,用于训练

    Segnet网络标签为png格式.我们用labelme制作图片分割的标签,得到的为json文件,我们要提取json文件,将json文件转换为png格式的标签文件,并将标签文件提取出来,遇到多类标签,给 ...

  5. VOC数据集制作 滑窗切分图片 单通道标签调色板

    做PASCAL VOC语义分割数据集的时候, 1.标注工具使用labelme,我是在anaconda下新建了一个名字为labelme的虚拟环境,将labelme安装在了这个环境下面,具体的安装一堆教程 ...

  6. ubuntu16.04下使用YOLOV3训练自己做的VOC数据集(VOC数据集制作+模型训练步骤+训练参数解析和问题解决+训练日志可视化(loss、IOU)+模型测试(单张、摄像头、批量测试))

    前序 1.环境配置 请自行参考其他博客 本机环境 ubuntu16.04 python3 英伟达显卡驱动:nvidia-396 OpenCV3.4.5 CUDNN7.0.5 CUDA9.0 2.ubu ...

  7. 解决not well-formed (invalid token)BUG,xml标签转到txt标签,txt标签转到xml标签,滑动窗口切割图像并且同步标签

    紧接上次,我的最终目的现在是滑动窗口切割图片并且同步标签.需要对xml文件进行读写. python报错xml.etree.ElementTree.ParseError: not well-formed ...

  8. 【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 设置 xml 标签内容 | 设置 xml 标签属性 )

    文章目录 一.使用 MarkupBuilder 生成 xml 数据 二.完整代码示例 一.使用 MarkupBuilder 生成 xml 数据 生成 <student><name c ...

  9. 织梦php开发tags功能开发,DedeCms织梦二次开发批量添加tag标签 批量修改TAG标签功能的方法...

    需求背景: 之前发布了不少文章,后来发现之前的这些文章当时发布时都没有添加tag标签,然而现在需要都添加上tag标签,然而这个在默认的织梦后台是没办法批量实现的,只能一篇篇文章去修改. 思考: 织梦原 ...

最新文章

  1. python怎么打开交互式窗口-使用pycharm进行交互式shell调试
  2. Android开发心得-ListView的监听事件
  3. 使用 docker 部署 mdnice
  4. 《dp补卡——买卖股票问题》
  5. 语文高考识记现代汉字的字形【转】
  6. leetcode —— 523. 连续的子数组和
  7. 用VBScript实现Zip压缩目录中的所有文件
  8. 在线文本转2-36任意进制工具
  9. Java菜鸟学习笔记--面向对象篇(十八):对象转型多态
  10. DOTween 数字变化
  11. 【转】Delphi配置系统未能初始化
  12. nginx常用配置模板
  13. 车载吸尘器方案-无刷马达运用2
  14. 谷歌Mediapipe运行环境配置
  15. html5中背景图片的大小怎么调,css中怎么改变背景图片大小?
  16. CIE1931-XYZ表色系统
  17. 更高更快更强!“游戏引擎”发展漫谈
  18. vue2的vue.config文件
  19. 前端学习JS第八天(P102--P110)
  20. 机器学习:线性模型通过python创建机器模型最终预测出儿童身高

热门文章

  1. ajax取消数据获取
  2. python内存地址替换原理(20秒读懂)
  3. python十大必备知识_python学习必备知识汇总
  4. Python邮件操作实例:发个邮件用Python实现远程自动关机
  5. 算法导论 练习12.2
  6. 多层GCN的over-smooth问题
  7. 线性筛法求质数分解、欧拉函数
  8. STL中algorithm里的查找
  9. 【WCF】无法加载协定为“ServiceReference1.xxxxxx”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分.
  10. 创建第一个RMI应用