将 .json 格式 转换成 .xml格式
生活随笔
收集整理的這篇文章主要介紹了
将 .json 格式 转换成 .xml格式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 轉換前的 .json 格式文件的內容:
- 2. 轉換后的 .xml 格式文件的內容:
- 3. 將 .json 轉換成 .xml 格式代碼:
1. 轉換前的 .json 格式文件的內容:
json 是一個字典,具體內容看下面這個鏈接:
https://blog.csdn.net/weixin_42419002/article/details/100159408
2. 轉換后的 .xml 格式文件的內容:
<annotation><folder>VOC2012</folder> # 這些值訓練的時候不會被用到<filename>2007_000661.jpg</filename><source><database>The VOC2007 Database</database><annotation>PASCAL VOC2007</annotation><image>flickr</image></source><size><width>500</width> # 這個值需要改變<height>375</height> # 這個值需要改變<depth>3</depth></size><segmented>0</segmented><object><name>sofa</name> # 這個值需要改變<pose>Unspecified</pose><truncated>1</truncated><difficult>0</difficult><bndbox><xmin>119</xmin> # 這個值需要改變<ymin>177</ymin> # 這個值需要改變<xmax>331</xmax> # 這個值需要改變<ymax>278</ymax> # 這個值需要改變</bndbox></object><object><name>chair</name> # 這個值需要改變<pose>Unspecified</pose><truncated>1</truncated><difficult>0</difficult><bndbox><xmin>133</xmin> # 這個值需要改變<ymin>159</ymin> # 這個值需要改變<xmax>179</xmax> # 這個值需要改變<ymax>197</ymax> # 這個值需要改變</bndbox></object> </annotation>3. 將 .json 轉換成 .xml 格式代碼:
import os import json from lxml import etree as ET from xml.dom import minidomdef edit_xml(objects, id, dir):save_xml_path = os.path.join(dir, "%s.xml" % id) # xmlroot = ET.Element("annotation")# root.set("version", "1.0") folder = ET.SubElement(root, "folder")folder.text = "none"filename = ET.SubElement(root, "filename")filename.text = "none"source = ET.SubElement(root, "source")source.text = "201908"owner = ET.SubElement(root, "owner")owner.text = "YZN"size = ET.SubElement(root, "size")width = ET.SubElement(size, "width")width.text = str(2048)height = ET.SubElement(size, "height")height.text = str(2048)depth = ET.SubElement(size, "depth")depth.text = "3"segmented = ET.SubElement(root, "segmented")segmented.text = "0"for obj in objects: # object = ET.SubElement(root, "object")name = ET.SubElement(object, "name") # numbername.text = obj["category"]# meaning = ET.SubElement(object, "meaning") # name# meaning.text = inf_value[0]pose = ET.SubElement(object, "pose")pose.text = "Unspecified"truncated = ET.SubElement(object, "truncated")truncated.text = "0"difficult = ET.SubElement(object, "difficult")difficult.text = "0"bndbox = ET.SubElement(object, "bndbox")xmin = ET.SubElement(bndbox, "xmin")xmin.text = str(int(obj["bbox"]["xmin"]))ymin = ET.SubElement(bndbox, "ymin")ymin.text = str(int(obj["bbox"]["ymin"]))xmax = ET.SubElement(bndbox, "xmax")xmax.text = str(int(obj["bbox"]["xmax"]))ymax = ET.SubElement(bndbox, "ymax")ymax.text = str(int(obj["bbox"]["ymax"]))tree = ET.ElementTree(root)tree.write(save_xml_path, encoding="UTF-8", xml_declaration=True)root = ET.parse(save_xml_path) file_lines = minidom.parseString(ET.tostring(root, encoding="Utf-8")).toprettyxml(indent="\t") file_line = open(save_xml_path, "w", encoding="utf-8") file_line.write(file_lines)file_line.close()def getDirId(dir): # get the id list of id.pngnames = os.listdir(dir)ids = []for name in names:# path = os.path.join(dir, name)# img = cv2.imread(path)# w, h, c = img.shape# if name.endswith(".jpg") or name.endswith(".png"):# ids["%s" % name.split(".")[0]] = [w, h, c]ids.append(name.split(".")[0])return ids filedir = "annotations.json" annos = json.loads(open(filedir).read())trainIds = getDirId("Tinghua100K/images/train/") testIds = getDirId("Tinghua100K/images/test/")ids = annos["imgs"].keys() # all img ids in .json for id in ids:# json 中的ID圖片有待檢測目標,且該id圖片在 train文件夾中if len(annos["imgs"][id]["objects"]) > 0 and (id in trainIds) and :objects = annos["imgs"][id]["objects"]edit_xml(objects, id, dir = "xmlLabel/train")elif len(annos["imgs"][id]["objects"]) > 0 and (id in testIds):objects = annos["imgs"][id]["objects"]edit_xml(objects, id, dir = "xmlLabel/test")總結
以上是生活随笔為你收集整理的将 .json 格式 转换成 .xml格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python操作oracle数据库知识梳
- 下一篇: iOS小技能:OCR的使用(身份证/营业