import os
import shutil
def img_label_copy(file_list, img_save, label_save,img_dir,label_dir):
n = 1
for file in file_list:
#遍历原文件夹中的文件
file_name = file.split('.')[0]
img_path = os.path.join(img_dir, file_name + '.jpg') # 把文件的完整路径得到
label_path = os.path.join(label_dir, file_name + '.txt')
if os.path.exists(img_path) == os.path.exists(label_path) == True:
#用于判断某一对象(需提供绝对路径)是否为文件
# shutil.copy函数放入原文件的路径文件全名 然后放入目标文件夹
shutil.copy(img_path, img_save)
shutil.copy(label_path, label_save)
print(n, '/', len(file_list), file_name)
n += 1
else:
print(n, '/', len(file_list), file_name, 'file dont exist')
n += 1
assert len(os.listdir(img_save)) == len(os.listdir(label_save))
if __name__ == '__main__':
img_dir = r"F:\workspace\result\preson\混乱人像数据集3000张\images" # 原文件夹路径
label_dir = r'F:\workspace\result\preson\混乱人像数据集3000张\labels' # txt 路径
save_dir =r'F:\workspace\result\preson\混乱人像数据集3000张\person_detect' # 保存地址
#创建训练验证集文件夹
img_train_path = save_dir + '/images/train'
img_val_path = save_dir + '/images/val'
label_train_path = save_dir + '/labels/train'
label_val_path = save_dir + '/labels/val'
os.makedirs(img_train_path, exist_ok=True)
os.makedirs(img_val_path, exist_ok=True)
os.makedirs(label_train_path, exist_ok=True)
os.makedirs(label_val_path, exist_ok=True)
#判定图片文件数量与标签文件数量是否相等
# assert len(os.listdir(img_dir)) == len(os.listdir(label_dir))
#验证集占比
proportion = 1/6 # val/all
train_list = os.listdir(label_dir)[int(proportion*len(os.listdir(label_dir))):]
val_list = os.listdir(label_dir)[:int(proportion*len(os.listdir(label_dir)))]
# print(train_list)
img_label_copy(train_list, img_train_path, label_train_path,img_dir,label_dir)
img_label_copy(val_list, img_val_path, label_val_path,img_dir,label_dir)
python 文件复制,yolov5创建训练集与测试集
于 2022-12-15 14:40:34 首次发布