python 文件复制,yolov5创建训练集与测试集

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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值