以下是一个可能的解决方案:

import os
import random
import shutil

# 设置数据目录和训练/测试目录
data_dir = r'G:\data'
train_dir = os.path.join(data_dir, 'train')
test_dir = os.path.join(data_dir, 'test')

# 如果训练/测试目录不存在,则创建它们
if not os.path.exists(train_dir):
    os.makedirs(train_dir)
if not os.path.exists(test_dir):
    os.makedirs(test_dir)

# 遍历数据目录下的所有文件夹
for foldername in os.listdir(data_dir):
    folderpath = os.path.join(data_dir, foldername)
    if not os.path.isdir(folderpath):
        continue  # 跳过非文件夹的文件

    # 创建训练/测试目录下的子目录
    train_folder = os.path.join(train_dir, foldername)
    test_folder = os.path.join(test_dir, foldername)
    if not os.path.exists(train_folder):
        os.makedirs(train_folder)
    if not os.path.exists(test_folder):
        os.makedirs(test_folder)

    # 遍历文件夹中的所有图片文件
    for filename in os.listdir(folderpath):
        filepath = os.path.join(folderpath, filename)
        if not os.path.isfile(filepath):
            continue  # 跳过非文件的子目录

        # 随机划分为训练/测试
        if random.random() < 0.8:  # 80% 的概率为训练集
            dest_folder = train_folder
        else:
            dest_folder = test_folder

        # 将图片文件复制到目标目录
        dest_filepath = os.path.join(dest_folder, filename)
        shutil.copy(filepath, dest_filepath)

这个程序首先设置了数据目录和训练/测试目录,然后遍历数据目录下的所有文件夹。对于每个文件夹,它创建了训练/测试目录下的对应子目录,并遍历文件夹中的所有图片文件。对于每个图片文件,它使用 random.random() 生成一个随机数,如果这个随机数小于 0.8,就把图片文件复制到训练目录下的子目录中,否则就复制到测试目录下的子目录中。最后,它使用 shutil.copy() 函数进行文件复制操作

帮我写个python程序将Gdata目录下每个文件夹中图片以8:2的比例随机划分训练集和测试集训练图片创建新目录Gdatatrain测试图片放入新建Gdatatest

原文地址: https://www.cveoy.top/t/topic/fk1G 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录