精华内容
下载资源
问答
  • XMLPatch 是一个简单的工具,用来批量的修改 XML 文件,它使用 patch 文件的形式,包含要改动的内容,然后批量的应用到指定的 XML 文件,完成批量修改过程。 标签:XMLPatch
  • int updateKeChengChengJi(List<String> ids); <update id="updateUser"> update user ...foreach close=")" collection="list" item="listItem" open="(" separator=",">... #{listItem}.
    int updateKeChengChengJi(List<String> ids);
    
    <update id="updateUser">
        update user
            SET
            age='18'
            where id in
        <foreach close=")" collection="list" item="listItem" open="(" separator=",">
            #{listItem}
        </foreach>
    </update>
    展开全文
  • python 批量修改 labelImg 生成的xml文件的方法发布时间:2020-10-26 04:08:12来源:脚本之家阅读:92作者:Miscellaneous0712概述自己在用labelImg打好标签后,想只用其中几类训练,不想训练全部类别,又不想重新...

    python 批量修改 labelImg 生成的xml文件的方法

    发布时间:2020-10-26 04:08:12

    来源:脚本之家

    阅读:92

    作者:Miscellaneous0712

    概述

    自己在用labelImg打好标签后,想只用其中几类训练,不想训练全部类别,又不想重新打标生成.xml文件,因此想到这个办法:直接在.xml文件中删除原有的不需要的标签类及其属性。

    打标时标签名出现了大小写(工程量大时可能会手滑),程序中有改写标签值为小写的过程,因为我做py-faster-rcnn 训练时,标签必须全部为小写。

    以如下的.xml文件为例,我故意把标签增加了大写

    test.jpg

    C:\Users\yasin\Desktop\test

    Unknown

    400

    300

    3

    0

    People

    Unspecified

    0

    0

    80

    69

    144

    89

    CAT

    Unspecified

    0

    0

    40

    69

    143

    16

    dog

    Unspecified

    0

    0

    96

    82

    176

    87

    具体实现

    假如我们只想保留图片上的people和cat类,其他都删除,代码如下:

    from xml.etree.ElementTree import ElementTree

    from os import walk, path

    def read_xml(in_path):

    tree = ElementTree()

    tree.parse(in_path)

    return tree

    def write_xml(tree, out_path):

    tree.write(out_path, encoding="utf-8", xml_declaration=True)

    def find_nodes(tree, path):

    return tree.findall(path)

    def del_node_by_target_classes(nodelist, target_classes_lower, tree_root):

    for parent_node in nodelist:

    children = parent_node.getchildren()

    if (parent_node.tag == "object" and children[0].text.lower() not in target_classes_lower):

    tree_root.remove(parent_node)

    elif (parent_node.tag == "object" and children[0].text.lower() in target_classes_lower):

    children[0].text = children[0].text.lower()

    def get_fileNames(rootdir):

    data_path = []

    prefixs = []

    for root, dirs, files in walk(rootdir, topdown=True):

    for name in files:

    pre, ending = path.splitext(name)

    if ending != ".xml":

    continue

    else:

    data_path.append(path.join(root, name))

    prefixs.append(pre)

    return data_path, prefixs

    if __name__ == "__main__":

    # get all the xml paths, prefixes if not used here

    paths_xml, prefixs = get_fileNames("/home/yasin/old_labels/")

    target_classes = ["PEOPLE", "CAT"] # target flags you want to keep

    target_classes_lower = []

    for i in range(len(target_classes)):

    target_classes_lower.append(target_classes[i].lower()) # make sure your target is lowe-case

    # print(target_classes_lower)

    for i in range(len(paths_xml)):

    # rename and save the corresponding xml

    tree = read_xml(paths_xml[i])

    # get tree node

    tree_root = tree.getroot()

    # get parent nodes

    del_parent_nodes = find_nodes(tree, "./")

    # get target classes and delete

    target_del_node = del_node_by_target_classes(del_parent_nodes, target_classes_lower, tree_root)

    # save output xml, 000001.xml

    write_xml(tree, "/home/yasin/new_labels/{}.xml".format("%06d" % i))

    按照上述代码,示例.xml变为如下.xml,可以看出我们删除了除people和cat类的类别(即dog类),并把保留类别的打标改成了小写:

    test.jpg

    C:\Users\yasin\Desktop\test

    Unknown

    400

    300

    3

    0

    people

    Unspecified

    0

    0

    80

    69

    144

    89

    cat

    Unspecified

    0

    0

    40

    69

    143

    16

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。

    展开全文
  • python批量修改xml.rar

    2019-11-30 21:17:26
    批量修改xml中某个标签值,网上找了很多感觉看起来都好复杂,参考别人的代码写了一个。
  • 今天偶然需要修改一下Imglabel生成的xml说明文档。xml内容大体如下:trainimg0000.jpgE:/Project_dir/yolo_v2/darknet/build/darknet/x64/img/img0000.jpgUnknown26918730butterflyUnspecified004266228151我需要对...

    今天偶然需要修改一下Imglabel生成的xml说明文档。

    xml内容大体如下:

    train

    img0000.jpg

    E:/Project_dir/yolo_v2/darknet/build/darknet/x64/img/img0000.jpg

    Unknown

    269

    187

    3

    0

    butterfly

    Unspecified

    0

    0

    42

    66

    228

    151

    我需要对其中的标签里面的内容更改一下,于是想着使用python脚本来批量改一下,毕竟xml文档数目有些多。

    这其中踩了不少的坑,在此记录一下。

    首先我按照

    #修改

    n0.firstChild.data='circle'

    p0.firstChild.data='ok'

    其中先抛开python2与python3的区别不说,这个不是什么大问题,可是当我执行完xml文档居然一点改动都没有!why?

    后进行了一番其他尝试后,找到了这个

    >>> from xml.etree.ElementTree import parse, Element

    >>> doc = parse('pred.xml')

    >>> root = doc.getroot()

    >>> root

    >>> # Remove a few elements

    >>> root.remove(root.find('sri'))

    >>> root.remove(root.find('cr'))

    >>> # Insert a new element after ...

    >>> root.getchildren().index(root.find('nm'))

    1

    >>> e = Element('spam')

    >>> e.text = 'This is a test'

    >>> root.insert(2, e)

    >>> # Write back to a file

    >>> doc.write('newpred.xml', xml_declaration=True)

    >>>

    大致懂了,按照这个再来一下,结果发现xml还是没动。

    反省一下,为什么没有改动,说明是不是我没有写入磁盘,再去看看,应该是这个问题,改完后再跑,bingo!成功!

    代码如下:

    #!/usr/bin/python

    # -*- coding: UTF-8 -*-

    import os

    import os.path

    from xml.etree.ElementTree import parse, Element

    def test():

    path="E:/Project_dir/yolo_v2/darknet/build/darknet/x64/xml/"

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

    s=[]

    for xmlFile in files: #遍历文件夹

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

    print xmlFile

    pass

    path="E:/Project_dir/yolo_v2/darknet/build/darknet/x64/xml/"

    newStr=os.path.join(path,xmlFile)

    dom=parse(newStr) ###最核心的部分,路径拼接,输入的是具体路径

    root=dom.getroot()

    #print root

    part=xmlFile[0:7]

    part1=part+'.jpg'

    newStr1='E:/Project_dir/yolo_v2/darknet/build/darknet/x64/img/'+part1

    #root.remove(root.find('path'))

    #e=Element('path')

    #print root.find('path').text

    root.find('path').text=newStr1

    #print newStr

    #path[0]=newStr

    #n1[0:57]="E:/Project_dir/yolo_v2/darknet/build/darknet/x64/img/"

    # p0.firstChild.data='ok'

    # #打印输出

    print 'path after change'

    #print n0.firstChild.data

    # print '修改后的 pose'

    # print p0.firstChild.data

    # print '~~~~~'

    dom.write(newStr, xml_declaration=True)

    pass

    if __name__=='__main__':

    test()

    有很多注释的语句,基本没用,懒得删了,就这样吧

    展开全文
  • 最近刚刚接触深度学习,并尝试学习制作数据集,制作过程中发现了一个问题,现在跟大家分享一下。问题是这样的,在制作voc数据集时,我采集的是灰度图像,并已经用...批量修改了图像的深度后,发现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的值:

    XML修改后depth的值:

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

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

    时间: 2020-07-21

    展开全文
  • JAVA新手,要实现批量打开一文件夹下的TXT和XML然后查找指定内容,然后在后面添加内容。问题1:XML需要查找JAVA新手,要实现批量打开一文件夹下的TXT和XML然后查找指定内容,然后在后面添加内容。问题1:XML需要查找是...
  • python批量修改xml属性

    万次阅读 2018-01-25 21:48:26
    如何批量修改指定文件夹下的xml文件的指定属性.分三步走,首先,我们先看看如何读写单个 的xml文件;第二步,来看看如何遍历指定文件夹下的所有文件,获取到所有文件的文件名;第三步,我们来看看一二之间 该如何衔接.好,...
  • 如何批量修改指定文件夹下的xml文件的指定属性.分三步走,首先,我们先看看如何读写单个的xml文件;第二步,来看看如何遍历指定文件夹下的所有文件,获取到所有文件的文件名;第三步,我们来看看一二之间该如何衔接.好,lets...
  • 今天偶然需要修改一下Imglabel生成的xml说明文档。xml内容大体如下:trainimg0000.jpgE:/Project_dir/yolo_v2/darknet/build/darknet/x64/img/img0000.jpgUnknown26918730butterflyUnspecified004266228151我需要对...
  • 1. python批量修改文件名(控制文件名的起始编号) import os path = "E:/Project/label/fire/" # 目标路径 filename_list = os.listdir(path) # 扫描目标路径的文件,将文件名存入列表 t = 0 a = 900 # 文件名的...
  • 主要介绍了python批量修改xml属性的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • mybatis批量修改-xml方式

    千次阅读 2019-07-26 10:38:16
    mybatis批量查询,批量新增就不聊了,今天看看批量修改。 直接上代码吧 xml文件中代码如下: <update id="batchUpdate" parameterType="java.util.List"> update pat_doc_pat_info set sex= <foreach ...
  • 如何批量修改指定文件夹下的xml文件的指定属性.分三步走,首先,我们先看看如何读写单个的xml文件;第二步,来看看如何遍历指定文件夹下的所有文件,获取到所有文件的文件名;第三步,我们来看看一二之间该如何衔接.好,lets...
  • 批量修改xml文件节点信息

    千次阅读 2018-10-31 16:10:27
    如何批量修改指定文件夹下的xml文件的指定属性.分三步走,首先,我们先看看如何读写单个 的xml文件;第二步,来看看如何遍历指定文件夹下的所有文件,获取到所有文件的文件名;第三步,我们来看看一二之间 该如何衔接.好,...
  • 问题描述: 对大量xml标签进行修改floder的名字,以及path路径。例如把1修改为train,把路径修改为当前xml所在位置。 xml格式如下: 代码如下:
  • 修改前的xml文件 aachen_000000_000019_leftImg8bit.xml 在这里插入代码片 #python import xml.etree.ElementTree as ET import numpy as np import os '''由于cityperson行人数据集图片较大,将图片裁剪成4份,...
  • 1. python批量修改文件名(控制文件名的起始编号)import ospath = "E:/Project/label/fire/" # 目标路径filename_list = os.listdir(path) # 扫描目标路径的文件,将文件名存入列表t = 0a = 900 # 文件名的起始编号...
  • 最近公司用ibatis开发项目,本来可以用存储过程处理批量插入,批量修改及多组条件查询;但由于使用模块相对较小,暂时就在xml中配置,以前没有在xml做过类似处理,有必要记录一下;好了,代码如下: <!-- 批量...
  • 修改之前的xml file: 使用下列transformation: 如果node name已经是以no:开头,则给该节点加上attribute elementFormDefault,其value为"qualified". 否则将所有节点的name加上前缀n0: <xsl:...
  • 修改思路: 1.打开放xml的文件夹 2.获取相应节点标签的值 3.对值进行更改,其中路径更改使用正则替换 4.保存xml文件 # coding:utf-8 import re import os import os.path import xml.dom.minidom # path="../...
  • 360截图20191106214044006.jpg (23.15 KB, 下载次数: 0)2019-11-6 21:40 上传CPC采用的数据格式为:doc模板文件(骨架)+xml文件(肉)因此,通过修改XML就可以修改提交文件的内容,这个应用可就广了,什么批量变更啊,...
  • name属性名可以随意更改,如原本未have_mask,现在改为have_mask。 如原来的xml中name属性为: 现在需要将name:have_mask更改为face...#批量修改xml中内容 def test(): path = "D:\label_mask/"#xml文件所在的目录
  • 写VOC的xml文件的时候,将标记名称写为了“Annotations” 想要修改为“annotation”,但是找了很多,都不好做,最后找到了大佬的这篇https://blog.csdn.net/chen1234520nnn/article/details/103050716: 2....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,078
精华内容 431
关键字:

xml批量修改