精华内容
下载资源
问答
  • 修改前的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
    在这里插入图片描述

    展开全文
  • 使用 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文件中的图像后缀名“.jpg”批量去掉,这时候就需要批量修改Xml中的属性了。比如:修改之前的文件:修改后:import osimport os.pathimport xml.dom.minidompath="E:\python_summary\image_ano\Ano"....

    在训练时,有时候需要将jpg格式转换为png格式,顺便也要把jpg标注的xml文件转换为png的xml文件。例如,需要把xml文件中的图像后缀名“.jpg”批量去掉,这时候就需要批量修改Xml中的属性了。

    比如:修改之前的文件:

    修改后:

    import os

    import os.path

    import xml.dom.minidom

    path="E:\python_summary\image_ano\Ano"

    files=os.listdir(path)#返回文件夹中的文件名列表

    #print(files)

    s=[]

    count=0

    for xmlFile in files:

    if not os.path.isdir(xmlFile):#os.path.isdir()用于判断对象是否为一个目录

    #如果不是目录,则直接打开

    name1=xmlFile.split('.')[0]

    print(name1)

    dom=xml.dom.minidom.parse(path+'\\'+xmlFile)

    #print(dom)

    root=dom.documentElement

    newfolder=root.getElementsByTagName('folder')

    #print(newfolder)

    newpath = root.getElementsByTagName('path')

    newfilename = root.getElementsByTagName('filename')

    newfilename[0].firstChild.data = name1

    with open(os.path.join(path, xmlFile), 'w') as fh:

    dom.writexml(fh)

    #print('写入name/pose OK!')

    count = count + 1

    参考:CSDN-专业IT技术社区-登录​blog.csdn.net

    【图像jpg格式批量转换为png格式技巧】

    (1)、首先在你放图片的文件夹里新建一个记事本文件,取名为“图片批量转化”。要注意的一点就是,里面的图片要统一为一种格式。

    (2)、如果想将jpg格式批量转化为png格式,那么就在刚才新建的记事本文档里输入“ren *.jpg *.png”。举一反三可知,如果是将png格式转化为jpg,那么就该这样写“ren *.png *.jpg”。这里要强调的一点就是,“ren”与“png”之后要加有一个空格。记事本文档保存后,将后缀名修改为“bat”。

    (3)、最后一步就是双击“bat”后缀的这个文件,它会自动弹出一个窗口,不用管它,等几秒后自动消失,然后就发现所有的图片格式都变成我们想要的png格式了。

    参考:不用任何软件,批量转化图片格式-百度经验​jingyan.baidu.com

    【补充】

    XML中的一些属性,比如bndbox中的xmin,ymin,xmax,ymax这四个值,在标记时,如果这些值为负数或者小数,要把他们转换为整数或者不能超越图像边界的值,这时候就需要批量修改。

    修改时要注意每个Xml中的这四个值有多个对,也即是每幅图像可能有多个目标,从而对应的bndbox也有多个。

    # coding=utf-8

    import os

    import os.path #批量修改Xml文件中的属性值

    import xml.dom.minidom

    #打开xml文档

    path='E:\python_summary\Xml_Airpalne'

    files=os.listdir(path)#得到文件夹下所有文件名称(存到列表)

    #print(files)

    for xmlFile in files:#遍历文件夹

    if not os.path.isdir(xmlFile):#判断是否是文件夹,不是文件夹才打开

    #将获取的xml文件名送入到dom解析

    #print(xmlFile)

    dom=xml.dom.minidom.parse(os.path.join(path,xmlFile))

    root=dom.documentElement

    #获取标签对

    xmin=root.getElementsByTagName('xmin')

    ymin=root.getElementsByTagName('ymin')

    xmax=root.getElementsByTagName('xmax')

    ymax=root.getElementsByTagName('ymax')

    #修改属性值

    #xmin

    for j in range(len(xmin)):

    xmin[j].firstChild.data=int(float(xmin[j].firstChild.data))

    if (float(xmin[j].firstChild.data)< 0):

    xmin[j].firstChild.data=0

    print(xmin[j].firstChild.data)

    #ymin

    for u in range(len(ymin)):

    ymin[u].firstChild.data=int(float(ymin[u].firstChild.data))

    if (float(ymin[u].firstChild.data)< 0):

    ymin[u].firstChild.data=0

    print(ymin[u].firstChild.data)

    #xmax

    for v in range(len(xmax)):

    xmax[v].firstChild.data=int(float(xmax[v].firstChild.data))

    if (float(xmax[v].firstChild.data)< 0):

    xmax[v].firstChild.data=0

    print(xmax[v].firstChild.data)

    #ymax

    for s in range(len(ymax)):

    ymax[s].firstChild.data=int(float(ymax[s].firstChild.data))

    if (float( ymax[s].firstChild.data)< 0):

    ymax[s].firstChild.data=0

    print( ymax[s].firstChild.data)

    #保存修改到xml文件中

    with open(os.path.join(path,xmlFile),'w') as wn:

    dom.writexml(wn)

    print("修改完成!")

    参考:CSDN-专业IT技术社区-登录​blog.csdn.net

    展开全文
  • 例如,需要把xml文件中的图像后缀名“.jpg”批量去掉,这时候就需要批量修改Xml中的<filename>属性了。比如:修改之前的文件:修改后:import os import os.path import xml.dom.minidom path="E:pyth...

    在训练时,有时候需要将jpg格式转换为png格式,顺便也要把jpg标注的xml文件转换为png的xml文件。例如,需要把xml文件中的图像后缀名“.jpg”批量去掉,这时候就需要批量修改Xml中的<filename>属性了。

    比如:修改之前的文件:

    42e7aaf696bd5bbc97454a99dd6b106c.png

    修改后:

    8b9c31cd9d787a35eac312de79603a84.png
    import os
    import os.path
    import xml.dom.minidom
    path="E:python_summaryimage_anoAno"
    files=os.listdir(path)#返回文件夹中的文件名列表
    #print(files)
    s=[]
    count=0
    for xmlFile in files:
        if not os.path.isdir(xmlFile):#os.path.isdir()用于判断对象是否为一个目录
            #如果不是目录,则直接打开
            name1=xmlFile.split('.')[0]
            print(name1)
            dom=xml.dom.minidom.parse(path+''+xmlFile)
            #print(dom)
            root=dom.documentElement
            newfolder=root.getElementsByTagName('folder')
            #print(newfolder)
            newpath = root.getElementsByTagName('path')
            newfilename = root.getElementsByTagName('filename')
            newfilename[0].firstChild.data = name1
            with open(os.path.join(path, xmlFile), 'w') as fh:
                dom.writexml(fh)
                #print('写入name/pose OK!')
            count = count + 1

    8e7a63ab4ae879e6c43ffb428092675f.png

    参考:

    CSDN-专业IT技术社区-登录blog.csdn.net

    【图像jpg格式批量转换为png格式技巧】

    (1)、首先在你放图片的文件夹里新建一个记事本文件,取名为“图片批量转化”。要注意的一点就是,里面的图片要统一为一种格式。

    (2)、如果想将jpg格式批量转化为png格式,那么就在刚才新建的记事本文档里输入“ren *.jpg *.png”。举一反三可知,如果是将png格式转化为jpg,那么就该这样写“ren *.png *.jpg”。这里要强调的一点就是,“ren”与“png”之后要加有一个空格。记事本文档保存后,将后缀名修改为“bat”。

    (3)、最后一步就是双击“bat”后缀的这个文件,它会自动弹出一个窗口,不用管它,等几秒后自动消失,然后就发现所有的图片格式都变成我们想要的png格式了。

    参考:

    不用任何软件,批量转化图片格式-百度经验jingyan.baidu.com
    76dc92f9edac58752e491f187c0cdd04.png

    【补充】

    XML中的一些属性,比如bndbox中的xmin,ymin,xmax,ymax这四个值,在标记时,如果这些值为负数或者小数,要把他们转换为整数或者不能超越图像边界的值,这时候就需要批量修改。

    修改时要注意每个Xml中的这四个值有多个对,也即是每幅图像可能有多个目标,从而对应的bndbox也有多个。

    # coding=utf-8
    import os
    import os.path #批量修改Xml文件中的属性值
    import xml.dom.minidom
    #打开xml文档
    path='E:python_summaryXml_Airpalne'
    files=os.listdir(path)#得到文件夹下所有文件名称(存到列表)
    #print(files)
    for xmlFile in files:#遍历文件夹
        if not os.path.isdir(xmlFile):#判断是否是文件夹,不是文件夹才打开
            #将获取的xml文件名送入到dom解析
            #print(xmlFile)
            dom=xml.dom.minidom.parse(os.path.join(path,xmlFile))
            root=dom.documentElement
            #获取标签对
            xmin=root.getElementsByTagName('xmin')
            ymin=root.getElementsByTagName('ymin')
            xmax=root.getElementsByTagName('xmax')
            ymax=root.getElementsByTagName('ymax')
            #修改属性值
            #xmin
            for j in range(len(xmin)):
                xmin[j].firstChild.data=int(float(xmin[j].firstChild.data))
                if (float(xmin[j].firstChild.data)< 0):
                    xmin[j].firstChild.data=0
                print(xmin[j].firstChild.data)
            #ymin
            for u in range(len(ymin)):
                ymin[u].firstChild.data=int(float(ymin[u].firstChild.data))
                if (float(ymin[u].firstChild.data)< 0):
                    ymin[u].firstChild.data=0
                print(ymin[u].firstChild.data)
            #xmax
            for v in range(len(xmax)):
                xmax[v].firstChild.data=int(float(xmax[v].firstChild.data))
                if (float(xmax[v].firstChild.data)< 0):
                    xmax[v].firstChild.data=0
                print(xmax[v].firstChild.data)
            #ymax
            for s in range(len(ymax)):
                ymax[s].firstChild.data=int(float(ymax[s].firstChild.data))
                if (float( ymax[s].firstChild.data)< 0):
                    ymax[s].firstChild.data=0
                print( ymax[s].firstChild.data)
            #保存修改到xml文件中
            with open(os.path.join(path,xmlFile),'w') as wn:
                dom.writexml(wn)
                print("修改完成!")
    

    参考:

    CSDN-专业IT技术社区-登录blog.csdn.net
    展开全文
  • python批量修改xml内容和属性

    千次阅读 2019-03-16 17:46:25
    把原始的xml文件 修改为 # -*- coding: utf-8 -*- &amp;quot;&amp;quot;&amp;quot; Created on Sat Mar 16 10:25:40 2019 @author: w &amp;quot;&amp;quot;&amp;quot; ...
  • Python 修改xml文件内容——批量更改Labelimg标签文件路文件夹名目的原始文件与想要的结果对比图代码实现xml.etree.ElementTree 目的 对一个文件夹中全部Labelimg标记的xml文件中的文件路径以及文件夹名,使用python...
  • 360截图20191106214044006.jpg (23.15 KB, 下载次数: 0)2019-11-6 21:40 上传CPC采用的数据格式为:doc模板文件(骨架)+xml文件(肉)因此,通过修改XML就可以修改提交文件的内容,这个应用可就广了,什么批量变更啊,...
  • 深度学习中经常需要训练无标记的负样本,用于降低目标检测中的误检率、误识别率。生成负样本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...
  • 例如,需要把xml文件中的图像后缀名“.jpg”批量去掉,这时候就需要批量修改Xml中的<filename>属性了。比如:修改之前的文件:修改后:import os import os.path import xml.dom.minidom path="E:pyth...
  • python中解析xml文件有三种常见的方法:一是xml.dom.*模块,她是W3C DOM API的实现;二是xml.sax.*模块,它是SAX API,这个模块牺牲了便捷性来换取速度和内存占用,SAX是一个基于事件的API,它可以“在空中”处理...
  • name属性名可以随意更改,如原本未have_mask,现在改为have_mask。 如原来的xml中name属性为: 现在需要将name:have_mask更改为face...#批量修改xml内容 def test(): path = "D:\label_mask/"#xml文件所在的目录
  • 本文针对批量修改代码进行记录,很简单,删掉了针对项目的主要内容。 导入文件 首先将文件夹中的所有文件存到数字中: def file_list(path): # 传入存储的list f_list = os.listdir(path) # 将文件按首字母进行...
  • #批量读取Annotations下的xml文件 xml_dir=r'E:\TUNNEL\data2\Annotations' xml_list= glob.glob(xml_dir + '/*.xml') i = 0 for xml in xml_list: print(xml) per=ET.parse(xml) root = per.getroot
  • 批量修改文件名 将JPEGImages文件夹里的所有图片名****.tiff改为了****.jpg import os path = './JPEGImages/' filename_list = os.listdir(path) a = 1 for i in filename_list: old_name = path + i new_name =...
  • python遍历XML文件并修改某个属性(九宫格批量修改)欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表...
  • 在此记录下,用python将layout下的xml文件中的@dimen/dpxxx改为(xxx/3)dp。 import os, shutil,re if __name__=='__main__': work_dir = 'C:\\Users\\Desktop\\workspace\\app\\src\\main\\res\\layout' new_dir ...
  • 本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下用法 python Modifer.py ./ -fp java xml# coding:utf-8# Build by LandGrey 2016-05-27import osimport sys#批量修改...
  • 本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下用法 python Modifer.py ./ -fp java xml# coding:utf-8# Build by LandGrey 2016-05-27import osimport sys#批量修改...
  • 因为通过sublime批量替换10多个G的xml文件遇到困难,sublime批量修改的时候,会打开指定文件,导致内存空间爆炸,哪怕内存容量够,每5G的修改,会在开始替换的时候再次内存爆炸。 因此,本文计划以python的方式,...
  • (以下代码仅做记录) (一)xml标注文件ctpn数据提取 以下代码对在做ctpn的人,自己想训练自己的数据集的人...dirpath = './label' #原来存放xml文件的目录 newdir = './labeltxt' #修改label后形成的txt目录 if no...
  • 本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下用法 python Modifer.py ./ -fp java xml# coding:utf-8# Build by LandGrey 2016-05-27import osimport sys#批量修改...
  • 创建delete_houzhui.py文件内容如下: # coding:utf-8 import os, shutil rootdir = 'jpg/' # 原始带有后缀名的文件路径 remove_path = 'jpg_new' # 去除后缀名的文件路径 # 修改文件名 def renameFile(oldname...
  • 本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下 用法 python Modifer.py ./ -fp java xml # coding:utf-8 # Build by LandGrey 2016-05-27 import os import sys #...
  • 需要用自己的数据集,但是数据集又是另一个人在另一台电脑上标注生成的,要直接在服务器下训练还不是很方便,主要是xml文件中路径属性的不同,那么今天就来和大家一起利用python脚本语言批量修改xml文件的属性内容:...
  • 本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下用法 python Modifer.py ./ -fp java xml# coding:utf-8# Build by LandGrey 2016-05-27import osimport sys#批量修改...
  • Python能干啥

    2019-07-16 20:17:00
    修改文件名/批量替换文件内容 pillow库 做图片处理 pdf相关 python游戏开发 2d平面游戏,有库支持3d python后端,负责数据的增删改查 10 python爬虫,10 import re import requests response =requests....

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

python批量修改xml文件内容

python 订阅