精华内容
下载资源
问答
  • 主要介绍了使用python批量修改XML文件中图像的depth值,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 问题是这样的,在制作voc数据集时,我采集的是灰度图像,并已经用labelimg生成了每张图像对应的XML文件。训练时发现好多目标检测模型使用的训练集是彩色图像,因此特征提取网络的输入是m×m×3的维度的图像。所以我...

    最近刚刚接触深度学习,并尝试学习制作数据集,制作过程中发现了一个问题,现在跟大家分享一下。问题是这样的,在制作voc数据集时,我采集的是灰度图像,并已经用labelimg生成了每张图像对应的XML文件。训练时发现好多目标检测模型使用的训练集是彩色图像,因此特征提取网络的输入是m×m×3的维度的图像。所以我就想着把我采集的灰度图像的深度也改成3吧。批量修改了图像的深度后,发现XML中的depth也要由1改成3才行。如果重新对图像标注一遍生成XML文件的话太麻烦,所以就想用python批量处理一下。果然在网上找到了类似的代码,简单修改一下就可以实现我们想要的功能了。

    全部代码如下

    #coding:utf-8

    import os

    import os.path

    import xml.dom.minidom

    path='E:/data/ann/'#这里修改为自己存放XML文件的路径

    files=os.listdir(path) #获取路径下的所有文件的名称

    s=[]

    for xmlFile in files:

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

    print(xmlFile)

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

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

    root=dom.documentElement

    ###获取标签对depth之间的值

    depth=root.getElementsByTagName('depth')

    #修改相应标签的值

    for i in range(len(depth)):

    print(depth[i].firstChild.data)

    a = depth[i].firstChild.data

    print(type(a))

    depth[i].firstChild.data=3

    print(depth[i].firstChild.data)

    #保存修改到xml文件中

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

    dom.writexml(fh)

    print('修改depth成功!')

    上面的代码的思路是,读取XML文件,并修改depth节点的内容修改为3,通过循环读取XML文件,实现批量化修改XML文件中depth的值。

    修改前后的结果

    XML修改前depth的值:

    XML修改后depth的值:

    这样,就可以使用自己制作的voc数据集进行训练了。我选的这个方法可能比较傻

    到此这篇关于使用python批量修改XML文件中图像的depth值的文章就介绍到这了,更多相关python批量修改XML内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    时间: 2020-07-21

    展开全文
  • 使用python批量修改XML文件中图像的深度 最近刚刚接触深度学习,并尝试学习制作数据集,制作过程中发现了一个问题,现在跟大家分享一下。问题是这样的,在制作voc数据集时,我采集的是灰度图像,并已经用labelimg...

    使用python批量修改XML文件中图像的depth

    最近刚刚接触深度学习,并尝试学习制作数据集,制作过程中发现了一个问题,现在跟大家分享一下。问题是这样的,在制作voc数据集时,我采集的是灰度图像,并已经用labelimg生成了每张图像对应的XML文件。训练时发现好多目标检测模型使用的训练集是彩色图像,因此特征提取网络的输入是m×m×3的维度的图像。所以我就想着把我采集的灰度图像的深度也改成3吧。批量修改了图像的深度后,发现XML中的depth也要由1改成3才行。如果重新对图像标注一遍生成XML文件的话太麻烦,所以就想用python批量处理一下。果然在网上找到了类似的代码,简单修改一下就可以实现我们想要的功能了。

    全部代码如下

    #coding:utf-8
    import os
    import os.path
    import xml.dom.minidom
     
    path='E:/data/ann/'#这里修改为自己存放XML文件的路径
    files=os.listdir(path) #获取路径下的所有文件的名称
    s=[]
    for xmlFile in files: 
    	    if not os.path.isdir(xmlFile): #判断是否是文件夹,不是文件夹才打开
    		        print(xmlFile)
    		
    		        #将获取到的xml文件名送入到dom解析
    		        dom=xml.dom.minidom.parse(os.path.join(path,xmlFile))
    		        root=dom.documentElement
    		
    		        ###获取标签对depth之间的值
    		        depth=root.getElementsByTagName('depth')
    		        
                    #修改相应标签的值
    		        for i in range(len(depth)):
    		                print(depth[i].firstChild.data)
    		                a = depth[i].firstChild.data
    		                print(type(a))
    		                depth[i].firstChild.data=3
    		                print(depth[i].firstChild.data)
     
    		        #保存修改到xml文件中
    		        with open(os.path.join(path,xmlFile),'w') as fh:
    			            dom.writexml(fh)
    			            print('修改depth成功!')
    

    上面的代码的思路是,读取XML文件,并修改depth节点的内容修改为3,通过循环读取XML文件,实现批量化修改XML文件中depth的值。

    修改前后的结果

    XML修改前depth的值:
    修改前depth的值为1
    XML修改后depth的值:
    depth成功修改成3
    这样,就可以使用自己制作的voc数据集进行训练了。我选的这个方法可能比较傻,哈哈。如果有好的方法还请留言多多指教~

    展开全文
  • 修改前的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
    在这里插入图片描述

    展开全文
  • python批量修改xml文件的标签属性值

    千次阅读 2020-01-08 18:25:03
    一、使用背景 之前在ubuntu下做过yolov3目标检测的项目(Pascal VOC数据集),...因此需要用python批量修改xml中 filename和path两个属性值 所以…找轮子发现了-> https://blog.csdn.net/qq_41983165/article...

    一、使用背景

    之前在ubuntu下做过yolov3目标检测的项目(Pascal VOC数据集),近期ubuntu重装过,所以…标签文件中的路径都错了,labelImg无法关联图片和标签文件,对训练也有影响。
    因此需要用python批量修改xml中 filename和path两个属性值
    在这里插入图片描述
    所以…找轮子发现了-> https://blog.csdn.net/qq_41983165/article/details/87977712
    貌似有很多错误,无法直接用。但提供了很好的思路,在此感谢
    对其优化和修改后: 可以直接批量完整替换掉path,

    以下代码,使用时要修改为自己的路径,且要保证修改前标签文件名和图片名保持一致,代码很简单,自己看吧

    import xml.dom.minidom
    import os
    
    
    path='/home/hujl/dev/darknet-master/scripts/VOCdevkit/VOC2007/Annotations' 			# 原来xml文件存放的路径
    sv_path='/home/hujl/dev/darknet-master/scripts/VOCdevkit/VOC2007/Annotations1' 	# 修改后的xml文件存放路径
    files=os.listdir(path)
    for xmlFile in files:
    	dom=xml.dom.minidom.parse(os.path.join(path,xmlFile)) 	#打开xml文件,送到dom解析
    	root=dom.documentElement
    	item=root.getElementsByTagName('path') 				# 获取path这一node名字及相关属性值
    	a,b = os.path.splitext(xmlFile)							# 并没有取filename标签名,而直接用的文件名,保险期间还是用filename
    	for i in item:
    		i.firstChild.data='/home/hujl/dev/darknet-master/scripts/VOCdevkit/VOC2007/JPEGImages/'  # xml文件对应的图片路径
    	with open(os.path.join(sv_path,xmlFile),'w') as fh:							
    		dom.writexml(fh)					#将图片名 之前的路径全部替换
    
    	# 在路径后面 添加图片名 如 000001.jpg
    	for j in item:
    		i.firstChild.data += (a + '.jpg')
    	with open(os.path.join(sv_path,xmlFile),'w') as filenames:
    		dom.writexml(filenames)
    
    
    展开全文
  • 问题描述: 对大量xml标签进行修改floder的名字,以及path路径。例如把1修改为train,把路径修改为当前xml所在位置。 xml格式如下: 代码如下:
  • python批量修改xml文件的path和filename

    千次阅读 热门讨论 2019-02-27 16:17:13
    上一篇写了如何批量修改文件名,但是第一次总有像我这种终极小白绕弯路的时候,比如标注前忘记改图片名&amp;在Windows下标注的图片拿到Linux下训练。。。于是乎废了老大力气标注完的xml可能长这样 于是乎又一波...
  • 层级目录是一个文件夹包含很多子文件夹,子文件夹中有很多文件,其中包括xml文件,需要进行修改的就是此处的tour.xml 代码部分 import os import xml.etree.ElementTree as ET def get_xml(path): "...
  • 使用 os.listdir( ) 批量读取文件夹下的文件,然后循环相应的xml文件,并使用getElementsByTagName函数修改节点内容。 2.代码如下: import os import xml.dom.minidom import xml.etree.ElementTree xmldir = '...
  • 一、修改文件路径path属性 这里路径可以自定义,根据自己实际需求更改即可: import xml.dom.minidom ...sv_path = r'F:\Pycharm Community\foods\xml1' # 修改后的xml文件存放路径 files = os....
  • python 批量修改 labelImg 生成的xml文件的方法发布时间:2020-10-26 04:08:12来源:脚本之家阅读:92作者:Miscellaneous0712概述自己在用labelImg打好标签后,想只用其中几类训练,不想训练全部类别,又不想重新...
  • 如何批量修改指定文件夹下的xml文件的指定属性.分三步走,首先,我们先看看如何读写单个的xml文件;第二步,来看看如何遍历指定文件夹下的所有文件,获取到所有文件的文件名;第三步,我们来看看一二之间该如何衔接.好,lets...
  • 1. python批量修改文件名(控制文件名的起始编号) import os path = "E:/Project/label/fire/" # 目标路径 filename_list = os.listdir(path) # 扫描目标路径的文件,将文件名存入列表 t = 0 a = 900 # 文件名的...
  • 1. python批量修改文件名(控制文件名的起始编号)import ospath = "E:/Project/label/fire/" # 目标路径filename_list = os.listdir(path) # 扫描目标路径的文件,将文件名存入列表t = 0a = 900 # 文件名的起始编号...
  • 如何批量修改指定文件夹下的xml文件的指定属性.分三步走,首先,我们先看看如何读写单个的xml文件;第二步,来看看如何遍历指定文件夹下的所有文件,获取到所有文件的文件名;第三步,我们来看看一二之间该如何衔接.好,lets...
  • 如何批量修改指定文件夹下的xml文件的指定属性.分三步走,首先,我们先看看如何读写单个的xml文件;第二步,来看看如何遍历指定文件夹下的所有文件,获取到所有文件的文件名;第三步,我们来看看一二之间该如何衔接.好,lets...
  • 如何批量修改指定文件夹下的xml文件的指定属性.分三步走,首先,我们先看看如何读写单个 的xml文件;第二步,来看看如何遍历指定文件夹下的所有文件,获取到所有文件的文件名;第三步,我们来看看一二之间 该如何衔接.好,...
  • python批量修改xml属性

    万次阅读 2018-01-25 21:48:26
    如何批量修改指定文件夹下的xml文件的指定属性.分三步走,首先,我们先看看如何读写单个 的xml文件;第二步,来看看如何遍历指定文件夹下的所有文件,获取到所有文件的文件名;第三步,我们来看看一二之间 该如何衔接.好,...
  • 例如,需要把xml文件中的图像后缀名“.jpg”批量去掉,这时候就需要批量修改Xml中的属性了。比如:修改之前的文件:修改后:import osimport os.pathimport xml.dom.minidompath="E:\python_summary\image_ano\Ano"....
  • 360截图20191106214044006.jpg (23.15 KB, 下载次数: 0)2019-11-6 21:40 上传CPC采用的数据格式为:doc模板文件(骨架)+xml文件(肉)因此,通过修改XML就可以修改提交文件的内容,这个应用可就广了,什么批量变更啊,...
  • 写VOC的xml文件的时候,将标记名称写为了“Annotations” 想要修改为“annotation”,但是找了很多,都不好做,最后找到了大佬的这篇https://blog.csdn.net/chen1234520nnn/article/details/103050716: 2....

空空如也

空空如也

1 2 3 4 5 6
收藏数 115
精华内容 46
关键字:

python批量修改xml文件

python 订阅