检查XML文件内<object>(有几个label)的数量

检查XML文件内(有几个label)的数量

对于手工标注的数据集,在标注完成后需检查图片里object的数量,可能出现漏标(每张图片的label有3个,而有的标签文件里object只有1或2个),空标(自创的词哈哈,XML文件里一个object都没有,标完图片后觉得图片太模糊或其他原因将框框删除,但已经生成了XML文件),检查object有利于判断数据标注的情况,进而采取下一步措施。
将SrcDir修改为XML文件所在路径并运行即可,具体代码如下:

import os
import xml.dom.minidom


def ReadXml(FilePath):
    if os.path.exists(FilePath) is False:
        return None
    dom = xml.dom.minidom.parse(FilePath)
    root_ = dom.documentElement
    object_ = root_.getElementsByTagName('object')
    info = []
    for object_1 in object_:
        name = object_1.getElementsByTagName("name")[0].firstChild.data
        bndbox = object_1.getElementsByTagName("bndbox")[0]
        xmin = int(bndbox.getElementsByTagName("xmin")[0].firstChild.data)
        ymin = int(bndbox.getElementsByTagName("ymin")[0].firstChild.data)
        xmax = int(bndbox.getElementsByTagName("xmax")[0].firstChild.data)
        ymax = int(bndbox.getElementsByTagName("ymax")[0].firstChild.data)
        info.append([xmin, ymin, xmax, ymax, name])
    return info


SrcDir = r"I:\ImgOutput\BackUp\AmericaRect\SmallLabel"
LabelNum = {}
LabelNumLists = []

for root, dirs, files in os.walk(SrcDir):
    for file in files:
        if file[-1] == 'l':
            locations = ReadXml(root + "\\" + file)
            if len(locations) not in LabelNum:
                LabelNum[len(locations)] = 1
                LabelNumList = [file]
                LabelNumLists.append(LabelNumList)
            else:
                LabelNum[len(locations)] += 1
                LabelNumLists[list(LabelNum).index(len(locations))].append(file)

for i, key in enumerate(LabelNum.keys()):
    print("----------------------------%d----------------------------" % key)
    print(LabelNumLists[i])
print(LabelNum)

运行结果如下:
在这里插入图片描述

可以看到含有1个obje的XML文件有5980个,4个obje的XML文件有1个。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值