• YOLOV3 Label(.txt)文件转xml文件


    from xml.dom.minidom import Document
    import os
    import cv2
    
    def makexml(txtPath,xmlPath,picPath): #读取txt路径,xml保存路径,数据集图片所在路径
            dict = {'0': "slit_l",#字典对类型进行转换
                    '1': "trans_l",
                    '2': "slot_l",
                    '3': "sink_l",
                    '4': "chap_l",
                    '5': "block_l",
                    '6': "track_l",
                    '7': "plash",
                    '8': "block_h"}
            files = os.listdir(txtPath)
            for i, name in enumerate(files):
              xmlBuilder = Document()
              annotation = xmlBuilder.createElement("annotation")  # 创建annotation标签
              xmlBuilder.appendChild(annotation)
              txtFile=open(txtPath+name)
              txtList = txtFile.readlines()
              img = cv2.imread(picPath+name[0:-4]+".jpg")
              Pheight,Pwidth,Pdepth=img.shape
              for i in txtList:
                 oneline = i.strip().split(" ")
    
                 folder = xmlBuilder.createElement("folder")#folder标签
                 folderContent = xmlBuilder.createTextNode("VOC2007")
                 folder.appendChild(folderContent)
                 annotation.appendChild(folder)
    
                 filename = xmlBuilder.createElement("filename")#filename标签
                 filenameContent = xmlBuilder.createTextNode(name[0:-4]+".jpg")
                 filename.appendChild(filenameContent)
                 annotation.appendChild(filename)
    
                 size = xmlBuilder.createElement("size")  # size标签
                 width = xmlBuilder.createElement("width")  # size子标签width
                 widthContent = xmlBuilder.createTextNode(str(Pwidth))
                 width.appendChild(widthContent)
                 size.appendChild(width)
                 height = xmlBuilder.createElement("height")  # size子标签height
                 heightContent = xmlBuilder.createTextNode(str(Pheight))
                 height.appendChild(heightContent)
                 size.appendChild(height)
                 depth = xmlBuilder.createElement("depth")  # size子标签depth
                 depthContent = xmlBuilder.createTextNode(str(Pdepth))
                 depth.appendChild(depthContent)
                 size.appendChild(depth)
                 annotation.appendChild(size)
    
                 object = xmlBuilder.createElement("object")
                 picname = xmlBuilder.createElement("name")
                 nameContent = xmlBuilder.createTextNode(dict[oneline[0]])
                 picname.appendChild(nameContent)
                 object.appendChild(picname)
                 pose = xmlBuilder.createElement("pose")
                 poseContent = xmlBuilder.createTextNode("Unspecified")
                 pose.appendChild(poseContent)
                 object.appendChild(pose)
                 truncated = xmlBuilder.createElement("truncated")
                 truncatedContent = xmlBuilder.createTextNode("0")
                 truncated.appendChild(truncatedContent)
                 object.appendChild(truncated)
                 difficult = xmlBuilder.createElement("difficult")
                 difficultContent = xmlBuilder.createTextNode("0")
                 difficult.appendChild(difficultContent)
                 object.appendChild(difficult)
                 bndbox = xmlBuilder.createElement("bndbox")
                 xmin = xmlBuilder.createElement("xmin")
                 mathData=int(((float(oneline[1]))*Pwidth+1)-(float(oneline[3]))*0.5*Pwidth)
                 xminContent = xmlBuilder.createTextNode(str(mathData))
                 xmin.appendChild(xminContent)
                 bndbox.appendChild(xmin)
                 ymin = xmlBuilder.createElement("ymin")
                 mathData = int(((float(oneline[2]))*Pheight+1)-(float(oneline[4]))*0.5*Pheight)
                 yminContent = xmlBuilder.createTextNode(str(mathData))
                 ymin.appendChild(yminContent)
                 bndbox.appendChild(ymin)
                 xmax = xmlBuilder.createElement("xmax")
                 mathData = int(((float(oneline[1]))*Pwidth+1)+(float(oneline[3]))*0.5*Pwidth)
                 xmaxContent = xmlBuilder.createTextNode(str(mathData))
                 xmax.appendChild(xmaxContent)
                 bndbox.appendChild(xmax)
                 ymax = xmlBuilder.createElement("ymax")
                 mathData = int(((float(oneline[2]))*Pheight+1)+(float(oneline[4]))*0.5*Pheight)
                 ymaxContent = xmlBuilder.createTextNode(str(mathData))
                 ymax.appendChild(ymaxContent)
                 bndbox.appendChild(ymax)
                 object.appendChild(bndbox)
    
                 annotation.appendChild(object)
    
              f = open(xmlPath+name[0:-4]+".xml", 'w')
              xmlBuilder.writexml(f, indent='\t', newl='\n', addindent='\t', encoding='utf-8')
              f.close()
    
    makexml("txt所在文件夹","xml保存地址","图片所在地址")
    

      

  • 相关阅读:
    解决tmux在PuTTY下工作异常的问题
    使用 Tmux 强化终端功能
    Redis的五种数据结构
    Kubernetes(k8s) docker集群搭建
    C# 正则表达式大全
    C#异步编程(async and await)及异步方法同步调用
    ASP.NET MVC同时支持web与webapi模式
    ActiveX IE保护模式下的低权限操作路径及Windows操作系统特殊路径
    C#文件夹权限操作工具类
    C#创建文件夹并设置权限
  • 原文地址:https://www.cnblogs.com/codeit/p/15748596.html
Copyright © 2020-2023  润新知