import os
import random
import argparse
#数据集划分
parser = argparse.ArgumentParser()
#xml文件的地址,根据自己的数据进行修改 xml一般存放在Annotations下
parser.add_argument('--txt_path', default=r'E:\stereovision\yolov5-master\new_data\images', type=str, help='input txt label path')
#数据集的划分,地址选择自己数据下的ImageSets/Main
parser.add_argument('--train_val_path', default=r'E:\stereovision\yolov5-master\new_data\dataset_path\main', type=str, help='output txt label path')
opt = parser.parse_args()
trainval_percent = 0.7 # 训练集和验证集所占比例。 这里没有划分测试集
train_percent = 0.5 # 训练集所占比例,可自己进行调整
xmlfilepath = opt.txt_path
txtsavepath = opt.train_val_path
total_xml = os.listdir(xmlfilepath)
if not os.path.exists(txtsavepath):
os.makedirs(txtsavepath)
num = len(total_xml)
list_index = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list_index, tv)
train = random.sample(trainval, tr)
file_trainval = open(txtsavepath + '/trainval.txt', 'w')
file_test = open(txtsavepath + '/test.txt', 'w')
file_train = open(txtsavepath + '/train.txt', 'w')
file_val = open(txtsavepath + '/val.txt', 'w')
for i in list_index:
name = total_xml[i][:-4] + '\n'
if i in trainval:
file_trainval.write(name)
if i in train:
file_train.write(name)
else:
file_val.write(name)
else:
file_test.write(name)
file_trainval.close()
file_train.close()
file_val.close()
file_test.close()
#写入图片路径
import os
sets = ['train', 'val']
for img_set in sets:
img_ids = open(r'F:\dataset_path\main\%s.txt' % (img_set)).read().split()
if not os.path.exists(r'F:\Imagesets'):
os.makedirs(r'F:\Imagesets')
list_file = open(r'F:\Imagesets/%s.txt' % (img_set), 'w')
for img_id in img_ids:
list_file.write('F:\images/%s.jpg\n'%(img_id))
list_file.close()
#复制图片路径到另一文件夹
import shutil
new_path='E:/stereovision/yolov5-master/new_data/tests/'
img_ids = open(r'E:\stereovision\yolov5-master\new_data\dataset_path\test.txt').read().split()
for img_id in img_ids:
img_idd=new_path+img_id.split('/')[-1]
shutil.copy(img_id , img_idd)
print()
写入图片到另一文件夹
最新推荐文章于 2024-10-01 20:22:14 发布