黑松山资源网 Design By www.paidiu.com
1. Json读写方法
def parseFromFile(self, fname): """ Overwritten to read JSON files. """ f = open(fname, "r") return json.load(f) def serializeToFile(self, fname, annotations): """ Overwritten to write JSON files. """ f = open(fname, "w") json.dump(annotations, f, indent=4, separators=(',', ': '), sort_keys=True) f.write("\n")
2. xml文件的工具包XML2Dict
将xml转换成Python本地字典对象, 访问子元素和字典常用方法类似,略有不同, 使用 “.”
注: 使用xml2dict库,需要在本地项目添加 xml2dict.py, object_dict.py,下载链接
加载xml文件
from xml2dict import XML2Dict xml = XML2Dict() r = xml.parse("待处理文件名.xml")
xml示例[voc2007格式]:
<annotation> <folder>VOC2007</folder> <filename>AL_00001.JPG</filename> <size> <width>800</width> <height>1160</height> <depth>3</depth> </size> <object> <name>l_faster</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>270</xmin> <ymin>376</ymin> <xmax>352</xmax> <ymax>503</ymax> </bndbox> </object> <object> <name>l_faster</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>262</xmin> <ymin>746</ymin> <xmax>355</xmax> <ymax>871</ymax> </bndbox> </object> <object> <name>r_faster</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>412</xmin> <ymin>376</ymin> <xmax>494</xmax> <ymax>486</ymax> </bndbox> </object> <object> <name>r_faster</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>411</xmin> <ymin>748</ymin> <xmax>493</xmax> <ymax>862</ymax> </bndbox> </object> </annotation>
分析下这个文件的格式:
最外一层被<annotation></annotation>包围
往里一层是:<file_name></file_name>,<size></size>,<object></object>,其中object是列表,包括name和bndbox,示例访问annotation下级元素
# -*- coding: utf-8 -*- from xml2dict import XML2Dict xml = XML2Dict() r = xml.parse('Annotations/AL_00001.xml') for item in r.annotation: print item print '------------' for item in r.annotation.object: print item.name, item.bndbox.xmin, item.bndbox.xmax, item.bndbox.ymin, item.bndbox.ymax
执行结果:
object folder size value filename ------------ l_faster 270 352 376 503 l_faster 262 355 746 871 r_faster 412 494 376 486 r_faster 411 493 748 862
完整代码[xml2json]
# -*- coding: utf-8 -*- from xml2dict import XML2Dict import json import glob def serializeToFile(fname, annotations): """ Overwritten to write JSON files. """ f = open(fname, "w") json.dump(annotations, f, indent=4, separators=(',', ': '), sort_keys=True) f.write("\n") def getAnnos(file_name="", prefix=''): xml = XML2Dict() root = xml.parse(file_name) # get a dict object anno = root.annotation image_name = anno.filename item = {'filename': prefix + image_name, 'class': 'image', 'annotations': []} for obj in anno.object: cls = {'l_faster': 'C1', 'r_faster': 'C2'}[obj.name] box = obj.bndbox x, y, width, height = int(box.xmin), int(box.ymin), int(box.xmax) - int(box.xmin), int(box.ymax) - int(box.ymin) item['annotations'] += [{ "class": cls, "height": height, "width": width, "x": x, "y": y }] return item if __name__ == '__main__': annotations = [] anno_name = 'AR_001-550.json' files = glob.glob('Annotations/AR_*.xml') files = sorted(files) # print files.sort() for filename in files: item = getAnnos(filename, prefix='TFS/JPEGImages/') print item print '-----------------' annotations += [item] #"xmls/AL_00001.xml" serializeToFile(anno_name, annotations)
以上这篇Python XML转Json之XML2Dict的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com
暂无评论...
更新日志
2024年10月07日
2024年10月07日
- 唐朝.2008-浪漫骑士【音乐家】【WAV+CUE】
- 张芸京.2016-失败的高歌【泡耳音乐】【WAV+CUE】
- 群星.1991-音乐工厂1·皇后大道东【音乐工厂】【WAV+CUE】
- 群星.1992-音乐工厂2·首都【音乐工厂】【WAV+CUE】
- 群星.1994-音乐工厂3·儿童乐园【音乐工厂】【WAV+CUE】
- 胡鸿钧.2021-ex:CHANGE【星梦娱乐】【WAV+CUE】
- 班得瑞原装进口《第一张新世纪专辑:仙境》1CD[APE/CUE分轨][292.3MB]
- 伍佰《摇滚教父 伍佰黄金精选 2CD》[WAV+CUE][990MB]
- 班得瑞原装进口《第二张新世纪专辑:寂静山林》1CD[APE/CUE分轨][327.1MB]
- Beyond.1989-真的见证(2024环球MQA-UHQCD限量版)【环球】【WAV+CUE】
- 陈怡婷.2024-予你的心谁来赔【福茂】【FLAC分轨】
- 陈冠希.2003-HITS.OR.MISSES【英皇娱乐】【WAV+CUE】
- 班得瑞原装进口《第三张新世纪专辑:春野》1CD[APE/CUE分轨][278.9MB]
- 班得瑞原装进口《第四张新世纪专辑:蓝色天际》1CD[APE/CUE分轨][284.8MB]
- 班得瑞原装进口《第五张新世纪专辑:迷雾森林+EP》1CD[APE/CUE分轨][334.2MB]