【数据集处理三】地_空背景下红外图像弱小飞机目标检测跟踪数据集标签格式转换

原本数据集中标签为点标记且为txt文本,将电标记转变为3*3的标记框并转化为xml格式。(data1中用8*8的框更合适)

代码如下:

import os
import csv
channel = 1
#空标签

def Annotations0_write():

    rename = str(index)
    # print (rename)#打印文件名
    with open(os.path.join(foldername, rename + '.xml'), 'w') as f:
        f.write(f"""<annotation >
    <folder>{foldername}</folder>
    <filename>{rename}.bmp</filename>
    <path>D:/Research direction/data set/foldername/rename.bmp</path>
	<source>
		<database>Unknown</database>
	</source>
    <size>
        <width>{256}</width>
        <height>{256}</height>
        <depth>{channel}</depth>
    </size>
    <segmented>0</segmented>\n""")
        f.write("</annotation>")

###############################################
#一个标签
def Annotations1_write(xmid1,ymid1):

    rename = str(index)
    # print (rename)#打印文件名
    with open(os.path.join(foldername, rename + '.xml'), 'w') as f:
        f.write(f"""<annotation>
    <folder>{foldername}</folder>
    <filename>{rename}.bmp</filename>
     <path>D:/Research direction/data set/foldername/rename.bmp</path>
	<source>
		<database>Unknown</database>
	</source>
    <size>
        <width>{256}</width>
        <height>{256}</height>
        <depth>{channel}</depth>
    </size>
    <segmented>0</segmented>\n""")
        f.write(f"""    <object>
            <name>drone</name>
            <pose>Unspecified</pose>
            <truncated>0</truncated>
            <difficult>0</difficult>
            <bndbox>
                  <xmin>{float(xmid1)-1.5}</xmin>
                  <ymin>{float(ymid1)-1.5}</ymin>
                  <xmax>{float(xmid1)+1.5}</xmax>
                  <ymax>{float(ymid1)+1.5}</ymax>
            </bndbox>
        </object>\n""")
        f.write("</annotation>")

#两个标签
def Annotations2_write(xmid1,ymid1,xmid2,ymid2):

    rename = str(index)
    # print (rename)#打印文件名
    with open(os.path.join(foldername, rename + '.xml'), 'w') as f:
        f.write(f"""<annotation>
    <folder>{foldername}</folder>
    <filename>{rename}.bmp</filename>
     <path>D:/Research direction/data set/foldername/rename.bmp</path>
	<source>
		<database>Unknown</database>
	</source>
    <size>
        <width>{256}</width>
        <height>{256}</height>
        <depth>{channel}</depth>
    </size>
    <segmented>0</segmented>\n""")
        f.write(f"""    <object>
            <name>drone</name>
            <pose>Unspecified</pose>
            <truncated>0</truncated>
            <difficult>0</difficult>
            <bndbox>
                    <xmin>{float(xmid1) - 1.5}</xmin>
                    <ymin>{float(ymid1) - 1.5}</ymin>
                    <xmax>{float(xmid1) + 1.5}</xmax>
                    <ymax>{float(ymid1) + 1.5}</ymax>
            </bndbox>
        </object>
        <object>
             <name>drone</name>
             <pose>Unspecified</pose>
             <truncated>0</truncated>
             <difficult>0</difficult>
             <bndbox>
                  <xmin>{float(xmid2) - 1.5}</xmin>
                  <ymin>{float(ymid2) - 1.5}</ymin>
                  <xmax>{float(xmid2) + 1.5}</xmax>
                  <ymax>{float(ymid2) + 1.5}</ymax>
              </bndbox>
        </object>\n""")
        f.write("</annotation>")

#读取第i+2行(i=0,表示从第二行开始读)
def read(index):
    for line in lines[index:index + 1:]:
        a = line.split()
        objnum = int(a[1])
        # print(line)

        if objnum == 1:
            xmid1 = a[3]
            ymid1 = a[4]
            Annotations1_write(xmid1,ymid1)
        elif objnum == 0:
            Annotations0_write()
        elif objnum == 2:
            xmid1 = a[3]
            ymid1 = a[4]
            xmid2 = a[6]
            ymid2 = a[7]
            Annotations2_write(xmid1,ymid1,xmid2,ymid2)

        else:
            print('出错了')



#########
with open ('data22.txt') as data:
# filename =  'data1.txt'
# data =open (filename)
  folder=data.readline() #读取第一行
  folder1=folder.split() #看做字符串
  foldername=folder1[1]  #文件夹名称
  num=int(folder1[2])#帧数
#print (foldername)
  path = foldername
  # print(num)
# 创建文件夹
  if not os.path.exists(path):
      os.mkdir(path)

  index=0
  a=folder1#给一个a原始值
  #外面一个while循环
  lines = data.readlines()
  while index != num:

     # if index != num:
     read(index)
     index = index + 1

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的大志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值