数据集.xml转json后转mask图

这篇博客介绍了如何利用Python解析遥感数据集DIOR的XML标注文件,将其转换为JSON,并从中提取特定类别的目标边界框信息,进而生成对应的mask图像。通过判断XML中的object信息是单个目标还是多个目标,对每张图像进行处理,最终保存含目标类别的原图和对应的mask图像。
摘要由CSDN通过智能技术生成

以遥感DIOR数据集为例,其标注文件为.xml格式,例
在这里插入图片描述
想把某一类从中取出来并生成针对此类的mask,实现方法是将.xml转化为json后读取object中的内容,将boundingbox的值取出生成mask图,需要用到的包如下

import simplejson
import xmltodict
import numpy as np

f.open()取出.xml数据,转换为json并读取字符

xmlparse = xmltodict.parse(xmlstr)
jsonstr = simplejson.dumps(xmlparse,indent=1)
simplejson_list = simplejson.loads(jsonstr, encoding='utf-8', strict=False)

取出object信息

annotation_objs = simplejson_list['annotation']['object']

由于DIOR数据集中一张图上可能有多个目标,故需要循环查找所需类别。在上个语句中,若一张图中只有一个目标,则annotation_objs为dict类型,若有多个目标则为list,所以要针对这两种情况分别讨论,不能直接循环查找。先判断是否为list,再循环list中每个obj的信息,将名字和boundingbox取出,对mask赋值

    if isinstance(annotation_objs, list): # 判断是否为List
        len_obj = len(annotation_objs)
        for i in range(len_obj):
            obj_name = annotation_objs[i]['name']
            if obj_name == obj_str:
                k = k+1
                obj_bnd = annotation_objs[i]['bndbox'
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值