【数据集】在批量xml标签中选出指定标签和对应图片

8 篇文章 1 订阅
6 篇文章 1 订阅

1.博主从朋友那里拿了一个VOC数据集,里面有20个类,博主只要6个

classes={"one","two","three","four","five","fist"}

2.选出来后把对应图片也找出来

# coding=utf-8
"""选出指定标签的xml文件"""
#"""选出对应标签的图片"""
import os
import os.path
import xml.dom.minidom
import shutil
import sys
path = "C:\\Users\\AS\\Desktop\\new\\Annotations"
newpath="C:\\Users\\AS\\Desktop\\new\\label"

label_path = "C:\\Users\\AS\\Desktop\\new\\label"
image_path = "C:\\Users\\AS\\Desktop\\new\\JPEGImages"
image_new_path ="C:\\Users\\AS\\Desktop\\new\\image"
files = os.listdir(path)  # 得到文件夹下所有文件名称
# s = []
classes={"one","two","three","four","five","fist"}
new =[]

def selete_xml_file():
    j = 1
    for xmlFile in files:
        # 遍历文件夹
        j=j+1
        fp = os.path.join(path, xmlFile)
        # print(fp)
        portion = os.path.splitext(xmlFile)
        if not os.path.isdir(xmlFile):
            # 判断是否是文件夹,不是文件夹才打开
            # print (xmlFile)

            # xml文件读取操作

            # 将获取的xml文件名送入到dom解析
            dom = xml.dom.minidom.parse(os.path.join(path, xmlFile))
            ###最核心的部分os.path.join(path,xmlFile),路径拼接,输入的是具体路径
            root = dom.documentElement
            name = root.getElementsByTagName('name')
            # print(name)
            # pose=root.getElementsByTagName('pose')
            # 重命名class name
            for i in range(len(name)):
                # print (name[i].firstChild.data)
                # print(xmlFile)
                # if name[i].firstChild.data=="one":
                if name[i].firstChild.data in classes:
                    # print("jjjjj")
                    newfp = os.path.join(newpath, os.path.basename(fp))
                    shutil.copyfile(fp, newfp)
                    print(j)
                    # new.append(fp)

def selete_image_file():
    k= 0
    # image_file = os.listdir(image_path)
    # list = os.listdir(newpath)
    list =[]
    for label in os.listdir(label_path):
        label = label.split('.',1)[0]
        list.append(label)

    for image in os.listdir(image_path):
        print(image)
        image_name= image.split('.',1)[0]
        print(image_name)
        if image_name in list:
            k=k+1
            print(k)
            newfp = os.path.join(image_new_path, os.path.basename(image))
            image = os.path.join(image_path, image)
            print(image)
            print(newfp)
            shutil.copyfile(image, newfp)
            print(k)

selete_image_file()
# selete_xml_file()

 

  • 9
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值