UAV数据集的txt中只有四个数据转换成xml

    科技2025-06-19  14

    仅作笔记整理搬运使用,没有任何程序原创部分,主要给自己提个醒,避免重复搜索工作 不会编程,只能拼凑

    UAV数据集 把有NaN的去掉,把txt备份为 car2.txt和car2-副本.txt 一、加上文件名

    # -*- coding:utf-8 -*- import sys import os #os:操作系统相关的信息模块 import random #导入随机函数 #存放原始图片地址 data_base_dir = r"C:/Users/SHS/Desktop/uavcar/car2/" file_list = [] #建立列表,用于保存图片信息 #读取图片文件,并将图片地址、图片名和标签写到txt文件中 write_file_name = r'C:/Users/SHS/Desktop/uavcar/car2.txt' write_file = open(write_file_name, "w") #以只写方式打开write_file_name文件 for file in os.listdir(data_base_dir): #file为current_dir当前目录下图片名 if file.endswith(".jpg"): #如果file以jpg结尾 write_name = 'Images/'+file #图片路径 + 图片名 + 标签 file_list.append(write_name) #将write_name添加到file_list列表最后 # sorted(file_list) #将列表中所有元素随机排列 number_of_lines = len(file_list) #列表中元素个数 #将图片信息写入txt文件中,逐行写入 for current_line in range(number_of_lines): write_file.write(file_list[current_line] + '\n') #关闭文件 write_file.close()

    car2.txt里是文件名 car2-副本.txt里是四个数,需要导入能分开数据 放到excel中,另存为总的tx但是这里数据之间是一个Tap,需要用word打开,将^t 替换为空格,保存

    二、把总的txt按行分成单独的txt,并以图片命名

    import re f = open('C:/Users/SHS/Desktop/car2.txt', 'r') f1 = f.readlines() for i in f1: # p = 'C:/Users/SHS/Desktop/car2txt/%s.txt' % (i[7:13]) p = 'C:/Users/SHS/Desktop/car2txt/%s.txt' % re.findall(".*Images/(.*).jpg.*", i)[0] #re.findall出来的是数组,取[0] print(p) with open(p, 'w')as a: a.write(i)

    然后单独存放一个文件夹car2txt

    牛逼二点五、直接txt里面box四个数分开单独txt,且以图片命名

    import os path_name='C:/Users/SHS/Desktop/uavcar/car18' f = open('C:/Users/SHS/Desktop/car18.txt', 'r') f1 = f.readlines() num=0 for dir_item in os.listdir(path_name): # 从初始路径开始叠加,合并成可识别的操作路径 if dir_item.endswith('.jpg'): img_name = os.path.splitext(dir_item)[0] box=f1[num] num+=1 p = 'C:/Users/SHS/Desktop/car2txt/%s.txt' % img_name print(p) with open(p, 'w')as a: a.write(box)

    三、txt转换成xml

    # ! /usr/bin/python # -*- coding:UTF-8 -*- import os, sys import glob from PIL import Image # 图像存储位置 src_img_dir = 'C:/Users/SHS/Desktop/uavcar/car2/' # 图像的 ground truth 的 txt 文件存放位置 src_txt_dir ='C:/Users/SHS/Desktop/UAV/car2txt/' src_xml_dir = 'C:/Users/SHS/Desktop/UAV/car2xml/' img_Lists = glob.glob(src_img_dir + '/*.jpg') img_basenames = [] # e.g. 100.jpg for item in img_Lists: img_basenames.append(os.path.basename(item)) img_names = [] # e.g. 100 for item in img_basenames: temp1, temp2 = os.path.splitext(item) img_names.append(temp1) for img in img_names: im = Image.open((src_img_dir + '/' + img + '.jpg')) width, height = im.size # open the crospronding txt file gt = open(src_txt_dir + '/' + img + '.txt').read().splitlines() # gt = open(src_txt_dir + '/gt_' + img + '.txt').read().splitlines() # write in xml file # os.mknod(src_xml_dir + '/' + img + '.xml') xml_file = open((src_xml_dir + '/' + img + '.xml'), 'w') xml_file.write('<annotation>\n') xml_file.write(' <folder>VOC2007</folder>\n') xml_file.write(' <filename>' + str(img) + '.jpg' + '</filename>\n') xml_file.write(' <size>\n') xml_file.write(' <width>' + str(width) + '</width>\n') xml_file.write(' <height>' + str(height) + '</height>\n') xml_file.write(' <depth>3</depth>\n') xml_file.write(' </size>\n') for img_each_label in gt: spt = img_each_label.split(' ') # 这里如果txt里面是以逗号‘,’隔开的,那么就改为spt = img_each_label.split(',')。 xml_file.write(' <object>\n') xml_file.write(' <name>car</name>\n') xml_file.write(' <pose>Unspecified</pose>\n') xml_file.write(' <truncated>0</truncated>\n') xml_file.write(' <difficult>0</difficult>\n') xml_file.write(' <bndbox>\n') xml_file.write(' <xmin>' + str(spt[1]) + '</xmin>\n') xml_file.write(' <ymin>' + str(spt[2]) + '</ymin>\n') xml_file.write(' <xmax>' + str(int(spt[3])+int(spt[1])) + '</xmax>\n') xml_file.write(' <ymax>' + str(int(spt[4])+int(spt[2])) + '</ymax>\n') xml_file.write(' </bndbox>\n') xml_file.write(' </object>\n') xml_file.write('</annotation>')

    生成完了

    参考 https://blog.csdn.net/u011622434/article/details/93876821?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf

    https://blog.csdn.net/xunan003/article/details/79052288 https://jingyan.baidu.com/article/adc815135eb083f723bf73d5.html

    Processed: 0.018, SQL: 8