DOTA数据集标签txt文件转为xml文件

2023-10-27

1.txt文件格式

DOTA数据集的txt文件格式如下:
在这里插入图片描述
其中,每一行的前8个数字代表目标物体四个顶点的坐标。

2.xml文件格式

使用labimg手动标注得到的xml文件:
在这里插入图片描述
从txt转换到xml有两种选择:
1.将原有的8坐标转换为4坐标的最小外界矩形,即hbb形式 xmin,ymin,xmax,ymax
2.保留原有坐标,即obb形式x0,y0,x1,y1,x2,y2,x3,y3

3.一般的txt到xml的转换思路

sourcetxtfile=fopen('p0000.txt')
all_img_name=os.listdir('./')  #找到图片的全部文件名写入一个列表
img_num=len(all_img) #图片数量

#以下是遍历txt的写法×××××××××××××××××××××××××××××××××××××××××××××××××××××××
for i in range(len(img_num)):
    current_img_name=all_img_name[i]  #当前图片名字
    current_img_name_xml=str(current_img_name)+'.xml' #转为str型并改为xml全名
    f=fopen(current_img_name_xml)   #新建一个上面生成的xml文件
#读取txt坐标
    sourcettxtfile.readlines()
    然后按照一定规律读就行,写成列表,比如过有八个框,就写成一个32维度的矩阵
#读取完写入一个location[32个数字]的列表

    fwrite('<annotation>'+'\n')  #第一行加换行符
    fwrite('工程的文件夹目录 +换行符)
    fwrite(current_img_name=all_img_name[i] )
    `````
    `````
    fwrite(<segmented>0</segmented>)#第一步结束

    #循环len(location)/4次,也就是8次,写xml文件
    fwrite('<object>'+'\n)
    fwrite(<name>你的标签</name>+\n)
    `````
    `````
    fwrite(xmin+\n)
    fwrite(ymin+\n)
    fwrite(xmax+\n)
    fwrite(ymax+\n)
    `````
    `````
    fwrite('<object>'+'\n)
    #循环完就基本就结束,最后一部分对应上面的
    fwrite('<annotation>'+'\n') 
f.close()关闭所有打开的文件
#××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

####这样p0000.txt就转为了第一张图片对应的xml文件
#如果txt文件也遍历就用××××××××××××之内的办法

4.最终使用的txt到xml转换的脚本

import os
import cv2
from xml.dom.minidom import Document

category_set = ['ship']

def custombasename(fullname):
    return os.path.basename(os.path.splitext(fullname)[0]) #只返回文件名
    
def limit_value(a, b):
    if a < 1:
        a = 1
    if a >= b:
        a = b - 1
    return a

def readlabeltxt(txtpath, height, width, hbb=True):
    print(txtpath)
    with open(txtpath, 'r') as f_in:  # 打开txt文件
        lines = f_in.readlines()
        splitlines = [x.strip().split(' ') for x in lines]  # 根据空格分割
        boxes = []
        for i, splitline in enumerate(splitlines):  #splitline按照行分隔,返回一个包含各行作为元素的列表
            if i in [0, 1]:  # DOTA数据集前两行对于我们来说是无用的
                continue
            label = splitline[8]
            if label not in category_set:  # 只书写制定的类别 #最后可print出不含ship的
                continue
            x1 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DOTA数据集标签txt文件转为xml文件 的相关文章

随机推荐

  • 在矩池云使用Llama2-7B的具体方法

    今天给大家分享如何在矩池云服务器使用 Llama2 7b模型 硬件要求 矩池云已经配置好了 Llama 2 Web UI 环境 显存需要大于 8G 可以选择 A4000 P100 3090 以及更高配置的等显卡 租用机器 在矩池云主机市场
  • 图像对比度,亮度

    很多时候 一张图像被过度曝光 显得很白 或者光线不足显得很暗 这个时候可以通过调节图像的这两个基本属性 亮度与对比度 来获得整体效果的提升 从而获得质量更高的图片 1 算子operator 首先我们给出算子的概念 一般的图像处理算子都是一个
  • 电源学习总结(五)——开关电源基本原理

    前面讲了一些线性稳压的原理和设计的基本方法 事实上 除了一些功率较大或者对精度要求较高的电源设计 使用集成的线性稳压芯片很少出现 翻车 事故 一般只需关注输入输出范围即可 此外 需注意由于集成的开关电源芯片 尤其是贴片封装的 如SOT 22
  • 【CUDA】初步了解PageLocked host memory的mapped memory功能使用

    导言 大家都知道CUDA 中PageLocked memory 相比portable memory 有着多种优势 在有front side bus的系统中 pagelocked memory 所提供的host 与device之间的数据传送速
  • 硬盘突然提示没有初始化_分享一下固态硬盘不认盘的修复方法

    写在开头 固态硬盘比较害怕突然停电 如果里面有重要数据 请勿用此方法尝试修复 即便可以成功 里面的数据也已经被抹除 需要恢复数据的话 还是需要找专业的数据恢复公司来做 切勿自己折腾 进入正题 前段时间淘了一块威刚的SP550 120G SA
  • 常用脚本(九)Unity_Input

    1 输出鼠标位置 在Update方法中 Debug Log Input mouseposition 2 判断鼠标是否点击 返回 True 和 false 每帧都输出 在Update方法中 Debug Log Input anykey 3 I
  • run()方法和start()方法的区别

    run 方法和start 方法的区别 文章目录 run 方法和start 方法的区别 一 start 是什么 二 run 是什么 三 具体代码实例 四 start 和run 方法的区别 参考 一 start 是什么 用 start方法来启动
  • 安全并正确地重启Elasticsearch集群

    文章目录 前言 问题原因其本质 提前准备 准备重启集群 更新集群 前言 elasticsearch本身具有高可用性 可以做到停机不停服务 在重启elasticsearch后可能存在数据丢失 或者是 启动ES后 怎么一直有大量的数据在迁移 问
  • 快速创建一个spring boot项目

    写了两年还在创建spring boot 项目 最近想自己尝试开发一个项目 所以随便记录一下吧 平常 工作都是现成的项目开发 在项目上加新功能之类的 除了工作平常回去也没琢磨 现在想多思考 为了国庆之后辞职 找工作做一个铺垫 分割线 选择一些
  • linux内核vmlinux生成过程简要分析

    最近工作不太忙 研究了一下Linux内核的编译过程 在此简要记录一下 obj zImage obj compressed vmlinux FORCE call if changed objcopy linux的内核 zImage 的生成依赖
  • 第二天(七)osg::Object* readObjectFile_const std::string& filename_const ReaderWriter::Options* options

    目前流程是 osgViewer viewBase frame viewerInit 创建帧事件 并将漫游器与事件和视口相关联 gt osgViewer Viewer ViewerInit gt osgViewer View Init gt
  • 电脑老是安装一些来路不明的软件(如何解决)?

    目录 先解决自身可能出现的问题 上四大方法 先解决自身可能出现的问题 1 自行百度下载软件 没有到官网那去下载 进入一些假官网下载软件会附带一些流氓软件 看好官网地址再下载或者用安全软件那去下载 2 电脑的浏览器被劫持了 浏览器会有小广告
  • 智能指针与引用计数详解(二)

    在智能指针与引用计数详解 一 当中讲了智能指针还有改进的地方 下面具体问题具体分析 一 智能指针的赋值方法改进 上一章的赋值方法中只要是赋值都是右操作数引用计数加一 左操作数引用计数减一 没有考虑过引用计数对象自赋值的情况 比如按照上一章代
  • Windows键盘对应苹果的Option键

    用mini mac的用户 如果用的是windows的键盘 那么开发时功能键或多或少会有一些不适应 特别是在xCode4中 我就一直没有找到option对应的windows键 苹果有介绍 http support apple com kb H
  • Matlab学习——求解微分方程(组)

    介绍 1 在 Matlab 中 用大写字母 D 表示导数 Dy 表示 y 关于自变量的一阶导数 D2y 表示 y 关于自变量的二阶导数 依此类推 函数 dsolve 用来解决常微分方程 组 的求解问题 调用格式为 X dsolve eqn1
  • 自定义指令 v-loading

    1 在src下创建directive文件夹 2 在directive文件夹下创建loading文件夹 3 loading文件夹内创建index js和loading vue 目录图 4 index js src directive load
  • QtCreator 快捷键问题记录

    我目前用的QtCreator Mac版8 0 0 具体信息如下 一般来说QtCreator的快捷键和设置项在windows下也是一样的 在QtCreator gt Options gt Environment gt Keyboard中可以找
  • SpringBoot整合office转换与预览

    文章目录 一 介绍 1 简介 2 aspose简介 3 jodconverter简介 二 springboot整合aspose实战 1 前期依赖准备 1 1 介绍 1 2 项目直接引入jar包 1 3 maven添加本地包 2 office
  • 使用Retrofit上传实体类到服务端(笔记)

    一 服务端 1 需要对参数用 RequestBody这个注解进行修饰 SpringBoot会自动将前端传过来的JSON数据反序列化成Java对象 登录 param requestVo return PostMapping value log
  • DOTA数据集标签txt文件转为xml文件

    文章目录 1 txt文件格式 2 xml文件格式 3 一般的txt到xml的转换思路 4 最终使用的txt到xml转换的脚本 5 之后可能用到的xml转换到txt的脚本 1 txt文件格式 DOTA数据集的txt文件格式如下 其中 每一行的