[python]将图片按比例分在多个文件夹(7:3分成训练集和测试集)

先看看原数据集:
第一层
在这里插入图片描述
第二层
在这里插入图片描述
其他类似~

再看看修改后数据集:
第一层:
在这里插入图片描述
第二层:
在这里插入图片描述
第三层:
在这里插入图片描述
test类似,这里不做展示-_-

然后上代码

# -*- coding: utf-8 -*-
"""
Created on Mon May 25 23:31:16 2020

@author: 吴
"""
#代码没什么地方难理解的,没看懂建议多print参数看看
import os
import random
import shutil
from shutil import copy2


category = ['可回收垃圾', '有害垃圾', '厨余垃圾', '其他垃圾']
#要保存的根目录
saveTrainPATH = r'D:\百步梯\图像识别\garbageClassifier\IMAGEDATA\train'
saveTestPATH = r'D:\百步梯\图像识别\garbageClassifier\IMAGEDATA\test'

if __name__=="__main__":
    
    for j in range(4):
        PATH = r'D:\百步梯\图像识别\垃圾目录' + '/'+  category[j]
    
        #子文件夹
        for childPATH in os.listdir(PATH):
            #子文件夹路径
            NewChildPATH = PATH + '/'+ str(childPATH)
            print(NewChildPATH)
            trainfiles = os.listdir(NewChildPATH)
            num_image = len(trainfiles)
            
            # print( NewChildPATH + "   \t num_image: " + str(num_image) )
            
            index_list = list(range(num_image))
            # print(index_list)
            # random.shuffle(index_list)
            num = 0
            
            #保存trian的路径-----------------------------
            trainDir = saveTrainPATH + '/' + category[j]
            #先判断是否存在这个文件夹
            if not os.path.exists(trainDir):                   
                os.mkdir(str(trainDir))
                
            
            childTrainDir = trainDir + '/' + str(childPATH)
            #判断子子文件夹是否存在,若不存在则创建(老套娃了~~)
            if not os.path.exists(childTrainDir):
                os.mkdir(str(childTrainDir))
                
            
            #保存test的路径---------------------------------
            testDir = saveTestPATH + '/' + '/' + category[j]   
            if not os.path.exists(testDir):
                os.mkdir(str(testDir))
                
                
            childTestDir = testDir + '/' + str(childPATH)
            #判断子子文件夹是否存在,若不存在则创建
            if not os.path.exists(childTestDir):
                os.mkdir(str(childTestDir))
                
            for i in index_list:
                fileName = os.path.join(NewChildPATH, trainfiles[i])
                if num < num_image*0.7:
                    copy2(fileName, childTrainDir)  #复制过去,不改变原来目录的图片
                else:
                    copy2(fileName, childTestDir)
                num += 1
               
            
            print(trainDir,'\n',testDir )

至此数据集处理终于完成了,有关数据集的处理可以看看我之前写的博客

1.python批量修改图片格式和名称
2.python文件夹下多个子文件夹,对图片批量修改格式和名称
3.python批量修改图片尺寸(含多个文件夹)

  • 13
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值