栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

修改深度学习VOC数据集,Python批量处理xml内容、生成新的xml文件及转移对应图片(附源码)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

修改深度学习VOC数据集,Python批量处理xml内容、生成新的xml文件及转移对应图片(附源码)

背景

博主在网上找到已经标注好的数据集,想去除掉不想标注的类同时去除没有用的图片文件,方便自己训练。代码注释都写清楚了

注意几点

要先装lxml,运气好输入pip install lxml就能成功~最好都写绝对路径,然后路径结尾必须要有\nameRule是命名用的 具体看代码这些代码可以拓展很多东西,满足自己的处理需求~
例如:如果不想转移文件 直接删除文件 用remove函数 具体看其他博客吧~ 点赞再复制养成好习惯~

 

from lxml import etree 
import os

#初始化
global num
isMove = False
#--------重命名文件的格式--------#
nameRule = '%06d'# 06表示000001,000002等命名排序
#--------源文件绝对路径(结尾必须是'\')--------#
xmldir = "D:deeplearnITERMDEL_imge_xmlVOCdevkitVOC2007Annotations\" 
imgsdir = "D:deeplearnITERMDEL_imge_xmlVOCdevkitVOC2007JPEGImages\"
#--------目标文件绝对路径(结尾必须是'\')--------#
outXMLdir ="D:deeplearnITERMDEL_imge_xmlhbC_x_Is_DATAAnnotations\" 
outImagedir = "D:deeplearnITERMDEL_imge_xmlhbC_x_Is_DATAJPEGImages\"


# def createFile(oripath):
#     xml_list = os.listdir(oripath)
#     for i in xml_list:  # 遍历所有xml文件
#         fullPath = oripath + i  # 完整路径
#         remove_(fullPath)  # 将完整路径作为参数传入调用该函数
 
 
def move_ImageAndXML():  # path 是原来xml文件的完整路径
    num = 1
    labName = ['aeroplane','bicycle','bird','boat','bottle','chair','diningtable','pottedplant','sofa','train','tvmonitor']
    xml_list = os.listdir(xmldir)
    for iA_XML in xml_list:  # 遍历所有xml文件
        fullPath = xmldir + iA_XML  # 完整路径
        tree = etree.parse(fullPath)
        root = tree.getroot()   # 获取根节点
        for object in root.findall('object'):   # 找到根节点下所有“object”节点
            name = str(object.find('name').text)  # 找到object节点下name子节点的值(字符串)
            for deletName in labName:
                if name == deletName:
                    root.remove(object)
        
        #已经找到对应文件开始处理
        if root.findall('object'):  # 找到为object的tag
            # 给新的xml重命名
            s = nameRule % num  # 06表示000001,000002等命名排序
            xml_name = str(s) +'.xml'
            print(num)
            num = num + 1

            #通过xml截取图片文件名
            image_Name = (iA_XML.split(".")[0])
            image_Name = image_Name + ".jpg"

            #写入新的xml文件 并移到对应路径
            new_ann_path = os.path.join(r'%s%s' %(outXMLdir, xml_name))
            tree.write(new_ann_path,encoding='utf-8') #将tree写入新的文件

            #改名
            old_Imagedir = os.path.join(os.path.abspath(imgsdir), image_Name)
            new_Imagedir = os.path.join(os.path.abspath(outImagedir), str(s)+".jpg")
            os.rename(old_Imagedir,new_Imagedir)

if __name__ == '__main__':
    move_ImageAndXML()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/714554.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号