1 安装工具箱

生成dota数据集需要该工具箱。

2 更改参数

下载安装好后,配置BboxToolkit/tools路径下的split_configs/dota1_0/ss_train.json文件。
根据需求更改参数。

3 更改类别

更改BboxToolkit/BboxToolkit/datasets/misc.py文件中的dota1_0中的类别

4 准备数据

现在有xywhθ标注的数据集,要转换成dota标注的格式

使用如下代码,路径需要自己修改:

import math
import shutil
import os
import numpy as np
import xml.etree.ElementTree as etdataset_dir = r'D:\dataset\sar\RSDD\RSDD-SAR\JPEGImages'
ana_dir = r'D:\dataset\sar\RSDD\RSDD-SAR\Annotations'
save_dir = r'D:\dataset\sar\RSDD\dota'
data_type = 'test'
train_img_dir = r'D:\dataset\sar\RSDD\RSDD-SAR\ImageSets\test.txt'
f1 = open(train_img_dir, 'r')
train_img = f1.readlines()def rota(center_x1, center_y1, x, y, w, h, a):  # 旋转中心点,旋转中心点,框的w,h,旋转角# a = (math.pi * a) / 180  # 角度转弧度x1, y1 = x - w / 2, y - h / 2  # 旋转前左上x2, y2 = x + w / 2, y - h / 2  # 旋转前右上x3, y3 = x + w / 2, y + h / 2  # 旋转前右下x4, y4 = x - w / 2, y + h / 2  # 旋转前左下px1 = (x1 - center_x1) * math.cos(a) - (y1 - center_y1) * math.sin(a) + center_x1  # 旋转后左上py1 = (x1 - center_x1) * math.sin(a) + (y1 - center_y1) * math.cos(a) + center_y1px2 = (x2 - center_x1) * math.cos(a) - (y2 - center_y1) * math.sin(a) + center_x1  # 旋转后右上py2 = (x2 - center_x1) * math.sin(a) + (y2 - center_y1) * math.cos(a) + center_y1px3 = (x3 - center_x1) * math.cos(a) - (y3 - center_y1) * math.sin(a) + center_x1  # 旋转后右下py3 = (x3 - center_x1) * math.sin(a) + (y3 - center_y1) * math.cos(a) + center_y1px4 = (x4 - center_x1) * math.cos(a) - (y4 - center_y1) * math.sin(a) + center_x1  # 旋转后左下py4 = (x4 - center_x1) * math.sin(a) + (y4 - center_y1) * math.cos(a) + center_y1return px1, py1, px2, py2, px3, py3, px4, py4  # 旋转后的四个点,左上,右上,右下,左下for img in train_img:shutil.copy(os.path.join(dataset_dir, img[:-1] + '.jpg'),os.path.join(save_dir, data_type, 'images', img[:-1] + '.jpg'))xml_file = open(os.path.join(ana_dir, img[:-1] + '.xml'), encoding='utf-8')tree = et.parse(xml_file)root = tree.getroot()with open(os.path.join(save_dir, data_type, 'labelTxt', img[:-1] + '.txt'), 'w') as f:f.write('imagesource:GoogleEarth\ngsd:NaN\n')for obj in root.iter('object'):cls = obj.find('name').textbox = obj.find('robndbox')x_c = box.find('cx').texty_c = box.find('cy').texth = box.find('h').textw = box.find('w').texttheta = box.find('angle').textbox = list(map(np.float16, [x_c, y_c, h, w, theta]))box = rota(box[0], box[1], *box)box = list(map(int, box))box = list(map(str, box))f.write(' '.join(box))f.write(' ' + cls + ' 0\n')

train_img_dir 是JPEGImages中的图像,文件内容如下:

最后生成如下的文件

5 得到结果

运行img_split.py文件,得到最后生成结果:


over!

生成DOTA格式的数据集相关推荐

  1. 【mmdetection小目标检测教程】三、使用sahi库切分高分辨率图片,一键生成coco格式数据集

    [mmdetection小目标检测教程]三.使用sahi库切分高分辨率图片,一键生成coco格式数据集 1.确认是否需要切分图像 2.子图切分 (1)安装sahi库 (2)基于sahi切图 本文我们将 ...

  2. 自制VOC格式图像分割数据集:使用python+PIL生成8位深的RGB图像

    最近在做图像分割任务的任务,使用的是DeepLabV3Plus框架,所以需要制作VOC格式的数据集.在制作的时候发现VOC数据集中的Mask尽管是彩色的,但是竟然是8位深的. 而一般情况下,图像的每个 ...

  3. coco格式的数据集进行训练

    前几篇博客一直在使用网上别人写好的代码,按照航拍数据打标的.json,.mask,.yaml,原图片,四个文件来制作数据集(我认为是自定义格式的数据集),最近跟一个热心的网友交流(超级感谢他)决定改为 ...

  4. 【Python】随机划分数据集并生成VOC格式列表

    1.Introduction 做目标检测时,用LabelImg生成的 xml 文件需要和对应的图片文件名,生成VOC格式列表.同时需要按照一定比例划分为训练集.验证集和测试集. 2.Materials ...

  5. Tensorflow生成自己的图片数据集TFrecords(支持多标签label)

    Tensorflow生成自己的图片数据集TFrecords 尊重原创,转载请注明出处:https://blog.csdn.net/guyuealian/article/details/80857228 ...

  6. 【csv文件转xml文件】Excel表格数据快速批量生成xml格式文件

    使用背景: 使用场景举例:数据集标签处理 有时候我们需要将固定格式的Excel表格文件(csv文件)转换为xml文件使用,例如我们在目标检测实验当中我们需要制作数据集Pascal VOC格式的标签文件 ...

  7. Json格式的数据集标签转化为有效的txt格式(data_coco)

    Json格式的数据集标签转化为有效的txt格式(data_coco) 学习前言 分析json格式标签 转化为有效的txt格式 实现效果 学习前言 在参加许多目标检测比赛时,为了能够获得合理的评价结果, ...

  8. 【目标检测数据集汇总】YOLO txt格式各种数据集

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 [目标检测数据集汇总]目标检测YOLO txt格式数据集~各种数据集 前言 相关连接: 一.安全帽数据集(10755张,nc2) 二. ...

  9. YOLOV5的Json格式的数据集标签转化成txt格式

    应用背景 思路分析 转化成txt 实现效果 总结 1.应用背景 当你要做某个目标检测的项目时,你获得的数据集可能是VOC格式的,也可能是Json格式的.但是用YOLOV5做目标检测的时候存储标签数据的 ...

最新文章

  1. 【python教程入门学习】如何把Python学好
  2. 低学历学什么技术有前途可以月入过万?
  3. latex下IEEE模板中嵌套Python代码
  4. HDU 1054 Strategic Game 最小点覆盖
  5. 排队接水pascal程序
  6. eclipse下的tomcat内存设置大小
  7. IncompatibleClassChangFound interface org.apache.hadoop.mapreduce.JobContext, but class was expected
  8. linux分割图片软件,桌面应用|5 种拆分 Linux 终端的方法
  9. 接口测试用python怎么做_请问一下python怎么做接口测试工具?
  10. 收获,不止SQL优化——抓住SQL的本质--读过程
  11. 设计干货|菜单 - 导航UI移动版模板
  12. 普通人,如何实现年收入百万?
  13. Apache mod_rewrite
  14. react中将html字符串渲染到页面
  15. sqlite3数据存储最多存储多少条数据?达到上限如何处理?_在线公开课 | 在数据爆炸的当下,教你设计一个能实现9个9数据可靠性的存储系统...
  16. [Windows系统]查看电脑开关机时间
  17. HTTP协议简介和系统命令curl,AIP调用 (ELK中运用)
  18. 用RNN做MNIST分类
  19. RS485通信的学习以及思考
  20. c# OpenCvSharp 判断图片的是否黑白

热门文章

  1. 巴什游戏入门(Bash Game)
  2. Linux下的复制粘贴
  3. 蓝牙资讯|Counterpoint发布2023年Q1中国智能手表报告
  4. 关于win7永久禁用驱动签名问题的总结
  5. ajax传递数组 用struts2来接收
  6. 2022年一级建造师建设工程经济考试模拟试题卷及答案
  7. 如何使用VS Code创建vue项目
  8. Python第四天作业
  9. 控制反转/依赖注入概念
  10. 2012 款奇瑞 A3 车发动机无法起动