第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 目标检测数据集格式转换(yolo→voc)

目标检测数据集格式转换(yolo→voc)

时间:2023-06-16 20:08:04

相关推荐

目标检测数据集格式转换(yolo→voc)

目标检测数据集格式转换(yolo→voc)

拿到的数据集标注格式为yolo,不过空格很奇怪:

标签 坐标1 坐标2 坐标3 坐标4 (标签后面一个空格 坐标之间两个空格)

现成的转换代码不能用,自己写一个

import osimport globfrom PIL import Imagefrom tqdm import tqdmvoc_annotations = r"E:\Master\dataset_person\dataset_person\dataset2\xml_labels/" #存放的xml文件地址yolo_txt = r"E:\Master\dataset_person\dataset_person\dataset2\labels\train/" #yolo数据集标签文件地址img_path = r"E:\Master\dataset_person\dataset_person\dataset2\images\train/" #yolo数据集图片地址labels = ['people'] #darknet数据集的类别# 图像存储位置src_img_dir = img_path# 图像的txt文件存放位置src_txt_dir = yolo_txtsrc_xml_dir = voc_annotationsimg_Lists = glob.glob(src_img_dir + '/*.jpg')img_basenames = []for item in img_Lists:img_basenames.append(os.path.basename(item))img_names = []for item in img_basenames:temp1, temp2 = os.path.splitext(item)img_names.append(temp1)for img in tqdm(img_names):im = Image.open((src_img_dir + '/' + img + '.jpg'))width, height = im.size# 打开txt文件gt = open(src_txt_dir + '/' + img + '.txt').read().splitlines()# print(gt)if gt:# 将主干部分写入xml文件中xml_file = open((src_xml_dir + '/' + img + '.xml'), 'w')xml_file.write('<annotation>\n')xml_file.write(' <folder>VOC</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')# write the region of image on xml filefor img_each_label in gt: # txt 文件中的每一行spt = img_each_label.split(' ') # 这里如果txt里面是以逗号‘,’隔开的,那么就改为spt = img_each_label.split(',')。#print(f'spt:{spt}')spt1 = spt[0].split(' ')#print(f'spt1:{spt1}')for i in range(1, 4):spt1.append(spt[i])#print(f'spt1:{spt1}')spt = spt1# print(f'spt:{spt}')xml_file.write(' <object>\n')xml_file.write(' <name>' + str(labels[int(spt[0])]) + '</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')#print(spt)center_x = round(float(spt[1].strip()) * width)#print(spt[2])center_y = round(float(spt[2].strip()) * height)bbox_width = round(float(spt[3].strip()) * width)bbox_height = round(float(spt[4].strip()) * height)xmin = str(int(center_x - bbox_width / 2))ymin = str(int(center_y - bbox_height / 2))xmax = str(int(center_x + bbox_width / 2))ymax = str(int(center_y + bbox_height / 2))xml_file.write(' <xmin>' + xmin + '</xmin>\n')xml_file.write(' <ymin>' + ymin + '</ymin>\n')xml_file.write(' <xmax>' + xmax + '</xmax>\n')xml_file.write(' <ymax>' + ymax + '</ymax>\n')xml_file.write(' </bndbox>\n')xml_file.write(' </object>\n')xml_file.write('</annotation>')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。