精华内容
下载资源
问答
  • 修改前的xml文件 aachen_000000_000019_leftImg8bit.xml 在这里插入代码片 #python import xml.etree.ElementTree as ET import numpy as np import os '''由于cityperson行人数据集图片较大,将图片裁剪成4份,...

    由于cityperson数据集图片较大,因此将图片裁剪成4份,同时对应修改标注信息

    链接: cityperson图片裁剪.

    修改前的xml文件 aachen_000000_000019_leftImg8bit.xml
    在这里插入图片描述

     #python
    import xml.etree.ElementTree as ET
    import numpy as np
    import os
    '''由于cityperson行人数据集图片较大,将图片裁剪成4份,同时对应修改标注信息其中左下裁剪图片代码如下,其他位置对应修改裁剪坐标即可,同时修改标注信息。'''
    i=1000000
    #批量修改Xml文件#xml文件存放路径/文件夹xml_path=r'F:\cityperson\citypersons2voc-master\cps_dvkt_w10hv50_ignore1\data\Annotations\\'
    filelist = os.listdir(xml_path)#获取所有的.xml文件
    for filename in filelist:    #遍历所有的.xml文件
        tree=ET.parse(xml_path + filename)#打开文件    #objs=tree.findall('object')    
        root = tree.getroot()    
        for wid in root.findall('size'):#查找“size”属性
            wid.find('width').text='1280'#修改width值 
            wid.find('height').text='768'#修改height值    
            #删除不符合要求的bbox框    
        for obj in root.findall('object'):        
        #print(obj)        
            bbox=obj.find('bndbox')        
            #print(bbox)        
            #获取bbox坐标信息
            x1=float(bbox.find('xmin').text)-1
            y1=float(bbox.find('ymin').text)-1
            x2=float(bbox.find('xmax').text)-1
            y2=float(bbox.find('ymax').text)-1
            if x2<=1280 and y2<=768: 
            #由于左下裁剪图片都是从0开始,无需修改标注
               continue        
            else:            
               root.remove(obj)#删除bndbox    
        #另保存XML文件    
        path='F:\cityperson\citypersons2voc-master\cps_dvkt_w10hv50_ignore1\data\Annotations_1'
        savepath=os.path.join(path,str(i)+'.xml')
        tree.write(savepath)    
        i=i+1
    print('完成')

    修改后的xml文件 aachen_000000_000019_leftImg8bit.xml
    在这里插入图片描述

    展开全文
  • 谁有没有好办法,能批量修改添加题目进这个xml文件中?我的想法是用Delphi再做一个小程序实现这个功能,但是没有具体的思路,哪位大神给点建议? 题目大致如下图: [img=...
  • 批量修改xml文件下某个标签内容/文件存储路径 被labelimg框图逼疯的我,参考了好久的资料,含泪写下了这个批量处理标签的文件,废话不多说了,直接上货。 一、待处理的xml文件内容 <annotation> <folder&...

    批量修改xml文件下某个标签内容/文件存储路径

    被labelimg框图逼疯的我,参考了好久的资料,含泪写下了这个批量处理标签的文件,废话不多说了,直接上货。

    一、待处理的xml文件内容

    <annotation>
      <folder>JPEGImages</folder>
      <filename>0037</filename>
      <path>H:\labelImg-master\windows_v1.2.2\data\voc\VOCdevkit\VOC2019\JPEGImages\0037.jpg</path>
      <source>
        <database>Unknown</database>
      </source>
      <size>
        <width>413</width>
        <height>347</height>
        <depth>3</depth>
      </size>
      <segmented>0</segmented>
      <object>
        <name>&#20113;</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
          <xmin>156</xmin>
          <ymin>161</ymin>
          <xmax>171</xmax>
          <ymax>189</ymax>
        </bndbox>
      </object>
      <object>
        <name>A</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
          <xmin>170</xmin>
          <ymin>161</ymin>
          <xmax>185</xmax>
          <ymax>191</ymax>
        </bndbox>
      </object>
      <object>
        <name>2</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
          <xmin>189</xmin>
          <ymin>161</ymin>
          <xmax>204</xmax>
          <ymax>191</ymax>
        </bndbox>
      </object>
      <object>
        <name>7</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
          <xmin>203</xmin>
          <ymin>162</ymin>
          <xmax>217</xmax>
          <ymax>189</ymax>
        </bndbox>
      </object>
      <object>
        <name>0</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
          <xmin>217</xmin>
          <ymin>162</ymin>
          <xmax>229</xmax>
          <ymax>188</ymax>
        </bndbox>
      </object>
      <object>
        <name>3</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
          <xmin>230</xmin>
          <ymin>163</ymin>
          <xmax>245</xmax>
          <ymax>190</ymax>
        </bndbox>
      </object>
      <object>
        <name>Q</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
          <xmin>243</xmin>
          <ymin>164</ymin>
          <xmax>258</xmax>
          <ymax>191</ymax>
        </bndbox>
      </object>
      <object>
        <name>plate</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
          <xmin>137</xmin>
          <ymin>145</ymin>
          <xmax>277</xmax>
          <ymax>208</ymax>
        </bndbox>
      </object>
    </annotation>
    

    二、需要修改的地方

      <folder>JPEGImages</folder>
      <filename>0037</filename>
      <path>H:\labelImg-master\windows_v1.2.2\data\voc\VOCdevkit\VOC2019\JPEGImages\0037.jpg</path>
    
      <object>
        <name>plate</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
          <xmin>137</xmin>
          <ymin>145</ymin>
          <xmax>277</xmax>
          <ymax>208</ymax>
        </bndbox>
      </object>
    

    1、将folder标签内容"JPEGImages"改为"pic"
    2、将path标签内容改为F:\ai_models\REALCP-position-20201124\pic\xxx
    3、将filename标签内容"0037"改为path标签中的路径下最后的文件名xxx,两者要保持一致
    4、将object标签下属性内容"name"的值"plate"改为"pb"
    5、只保留name属性值为’pb’的object节点

    三、实现代码

    ####################################################################################
    '''
    功能:1、保留、修改xml文件某标签内容
         2、修改xml文件存放路径,文件名,照片来源等
         3、本方法采用字符串方式解析打开,删除/保存xml文件
    '''
    ####################################################################################
    import xml.etree.ElementTree as ET
    import os
    
    
    def change_xml():
        """
        功能: 1、保留、修改xml文件某标签内容
             2、修改xml文件存放路径,文件名,照片来源等
             3、本方法采用字符串方式解析打开,删除/保存xml文件
             4、方法是在Windows系统下运行的,方法中的路径请根据不同系统自行更改
        """
        path = "E:\\znashi\\"  # xml文件存放路径
        save_path = "F:\\ai_models\\REALCP-position-20201124\\xml\\"  # 修改后的xml文件存放路径
        imgpath = "F:\\ai_models\\REALCP-position-20201124\\pic\\"  # 新的照片path路径
        files = os.listdir(path)  # 读取路径下所有文件名
        for xmlFile in files:
            if xmlFile.endswith('.xml'):
                tree = ET.ElementTree(file=path + xmlFile)  # 打开xml文件,送到tree解析
                root = tree.getroot()  # 得到文档元素对象
                root[0].text = 'pic'   # root[0].text是annotation下第一个子节点中内容,直接赋值替换文本内容
                root[1].text = xmlFile
                root[1].text = root[1].text.replace('xml','jpg')  #修改根节点下的内容
                # root[1].text = root[1].text.split('.')[0] #根据需求决定要不要文件名后缀
                root[2].text = imgpath + xmlFile
                for object in root.findall('object'):
                    name = object.find('name').text  # 获取每一个object节点下name节点的内容
                    if name == 'plate':
                        object.find('name').text = str('pb') #修改指定标签的内容
                    else:
                         root.remove(object)    # 删除除了name属性值为'plate'之外object节点的所有object节点
                tree.write(save_path + xmlFile)   # 替换后的内容保存在内存中需要将其写出
    
    if __name__ =="__main__":
        change_xml()
    

    四、修改后的xml文件内容

    <annotation>
      <folder>pic</folder>
      <filename>466.jpg</filename>
      <path>F:\ai_models\REALCP-position-20201124\pic\466.jpg</path>
      <source>
        <database>Unknown</database></source>
      <size>
        <width>310</width>
        <height>239</height>
        <depth>"3"</depth></size>
      <segmented>0</segmented>
      <object>
        <name>pb</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
          <xmin>68</xmin>
          <ymin>62</ymin>
          <xmax>248</xmax>
          <ymax>179</ymax></bndbox></object>
      </annotation>
    

    总结

    在这期间我也学习了一写批量处理文件重命名、批量复制文件的方法:
    方法一:进入某个文件夹,Ctrl+A选中所有文件,右键首个文件,重命名后,按下F2功能键完成所有文件按照数字递增模式重命名,但是这种方法批量重命名后面会有个括号,那怎么去掉括号呢?别着急,下面送上解决方案:去除批量重命名中的括号
    方法二:这个方法采用DOS命令和表格处理的方法实现批量重命名,这对于游客来说,感觉就很“高大上”了,不多说,写到这儿了我不想在打字了,直接上网址啦:DOS命令实现批量重命名
    方法三:对于复制指定内容时,可以使用方法二中的方法获得所有文件名,然后继续通过DOS指令实现批量复制,指令很简单,易理解易学:DOS命令实现批量复制指定文件

    展开全文
  • 使用 os.listdir( ) 批量读取文件夹下的文件,然后循环相应的xml文件,并使用getElementsByTagName函数修改节点内容。 2.代码如下: import os import xml.dom.minidom import xml.etree.ElementTree xmldir = '...

    1.大体流程

    使用 os.listdir( ) 批量读取文件夹下的文件,然后循环相应的xml文件,并使用getElementsByTagName函数修改节点内容。

    2.代码如下:

    import os
    import xml.dom.minidom
    import xml.etree.ElementTree
    
    xmldir = '/home/dulingwen/xml/' #你的xml文件的路經,注意最后一定要有'/'
    
    for xmlfile in os.listdir(xmldir):
        xmlname = os.path.splitext(xmlfile)[0]
    
        #读取 xml 文件
        dom = xml.dom.minidom.parse(os.path.join(xmldir,xmlfile))
        root = dom.documentElement
    
        #获取标签对的名字,并为其赋一个新值
        root.getElementsByTagName('filename')[0].firstChild.data = xmlname + '.jpg'
        root.getElementsByTagName('path')[0].firstChild.data = \
        '/home/dulingwen/Pictures/road/' + xmlname + '.jpg'
        root.getElementsByTagName('width')[0].firstChild.data = '2084'
        root.getElementsByTagName('height')[0].firstChild.data = '2084'
           
        #修改并保存文件
        xml_specific = xmldir + xmlfile 
        with open(xml_specific,'w') as fh:
            dom.writexml(fh)

     

    展开全文
  • 批量修改xml文件中的标签属性 """ 批量修改xml文件中的标签属性 对folder,filename和path内容进行修改,并同时去除文件名中的中文汉字 """ import re import os import xml.etree.ElementTree as ET def change_xml...
  • name属性名可以随意更改,如原本未have_mask,现在改为have_mask。 如原来的xml中name属性为: 现在需要将name:have_mask更改为face...#批量修改xml内容 def test(): path = "D:\label_mask/"#xml文件所在的目录

    name属性名可以随意更改,如原本未have_mask,现在改为have_mask。
    如原来的xml中name属性为:
    在这里插入图片描述
    现在需要将name:have_mask更改为face_mask。
    代码如下:

    
    ```python
    
    import os
    
    import os.path
    
    from xml.etree.ElementTree import parse, Element
    
    #批量修改xml中内容
    
    def test():
    
        path = "D:\label_mask/"#xml文件所在的目录
    
        files = os.listdir(path)  # 得到文件夹下所有文件名称
    
        s = []
    
        for xmlFile in files:  # 遍历文件夹
    
            if not os.path.isdir(xmlFile):  # 判断是否是文件夹,不是文件夹才打开
    
                print
    
                xmlFile
    
                pass
    
            path = "D:\label_mask/"
    
            print(xmlFile)
    
            path1 = "D:\label_mask/"+xmlFile#定位当前处理的文件的路径
    
            newStr = os.path.join(path, xmlFile)
    
            name = "face_mask"
    
            dom = parse(newStr)  ###最核心的部分,路径拼接,输入的是具体路径
    
            root = dom.getroot()
    
            print(root)
    
            for obj in root.iter('object'):#获取object节点中的name子节点
    
                obj.find('name').text=name
    
                name1 = obj.find('name').text#修改
    
                print(name1)
    
            dom.write(path1, xml_declaration=True)#保存到指定文件
    
            pass
    
    if __name__ == '__main__':
    
        test()
    
    
    
    展开全文
  • Python 修改xml文件内容——批量更改Labelimg标签文件路文件夹名目的原始文件与想要的结果对比图代码实现xml.etree.ElementTree 目的 对一个文件夹中全部Labelimg标记的xml文件中的文件路径以及文件夹名,使用python...
  • 本文针对批量修改代码进行记录,很简单,删掉了针对项目的主要内容。 导入文件 首先将文件夹中的所有文件存到数字中: def file_list(path): # 传入存储的list f_list = os.listdir(path) # 将文件按首字母进行...
  • 例如,需要把xml文件中的图像后缀名“.jpg”批量去掉,这时候就需要批量修改Xml中的<filename>属性了。比如:修改之前的文件:修改后:import os import os.path import xml.dom.minidom path="E:pyth...
  • 例如,需要把xml文件中的图像后缀名“.jpg”批量去掉,这时候就需要批量修改Xml中的属性了。比如:修改之前的文件:修改后:import osimport os.pathimport xml.dom.minidompath="E:\python_summary\image_ano\Ano"....
  • 深度学习中经常需要训练无标记的负样本,用于降低目标检测中的误检率、误识别率。生成负样本xml文件的一...此外本博客还包含了如何批量修改图像尺寸、文件名称、xml文件内容,这些也经常用到,代码如下,大家可以适...
  • Python修改xml文件内容

    千次阅读 2019-08-26 16:50:43
    在使用xml文件的过程中,发现其中filename的名字有问题,所以找了一个代码修改了这个文件。 ... import xml.etree.ElementTree as ET import os ...# 批量修改整个文件夹所有的xml文件 def change_all_xml...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 337
精华内容 134
关键字:

批量修改xml文件内容