把原始图片随机分为训练集验证集测试集

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hyl999/article/details/84887464
import os
import numpy
import random, shutil

def moveSomeFileToNewDir(fileDir, tarDir):
    #sonDirPath = []
    allDir = os.listdir(fileDir)  # 列出指定路径下的全部文件夹,以列表的方式保存
    for dir in allDir:  # 遍历指定路径下的全部文件和文件夹
        sonDirName = os.path.join(fileDir, dir)  # 子文件夹的路径名称
        if os.path.isdir(sonDirName):
            #sonDirPath.append(sonDirName)
            pathDir = os.listdir(sonDirName)  # 取图片的原始路径
            filenumber = len(pathDir)
            rate = 0.15  # 自定义抽取图片的比例,比方说100张抽15张,那就是0.15
            picknumber = int(filenumber * rate)  # 按照rate比例从文件夹中取一定数量图片
            sample = random.sample(pathDir, picknumber)  # 随机选取picknumber数量的样本图片
            print(sample)
            for name in sample:
                oldDir = sonDirName +'\\'+ name
                newDir = tarDir + '\\' + dir
                isExists = os.path.exists(newDir)
                if not isExists:
                    os.makedirs(newDir)
                newTarDir = tarDir +'\\'+dir +'\\'+ name

                print(oldDir, newTarDir)
                shutil.move(oldDir, newDir)


fileDir = r"E:\all_data"      #源图片文件夹路径
valDir = r'E:\val_data'       #移动到验证集目录路径
moveSomeFileToNewDir(fileDir, valDir)
testDir = r'E:\test_data'     #移动到测试集目录路径
moveSomeFileToNewDir(fileDir, testDir)

猜你喜欢

转载自blog.csdn.net/hyl999/article/details/84887464