写一段代码,实现将原本图片名按递增顺序排列的图片数据集,随机划分为训练集和测试集,比例为9:1,然后把训练集保持按照划分的顺序重新命名图片,
时间: 2023-11-25 08:06:30 浏览: 62
这里提供一个 Python 代码示例,使用了 `os`、`random` 和 `shutil` 模块:
```python
import os
import random
import shutil
# 设置图片数据集路径
dataset_dir = 'path/to/dataset'
# 获取所有图片文件名
image_files = os.listdir(dataset_dir)
# 将文件名按递增顺序排序
image_files.sort()
# 计算训练集和测试集的图片数量
num_train = int(len(image_files) * 0.9)
num_test = len(image_files) - num_train
# 随机选择测试集的图片索引
test_indices = set(random.sample(range(len(image_files)), num_test))
# 创建训练集和测试集目录
train_dir = os.path.join(dataset_dir, 'train')
test_dir = os.path.join(dataset_dir, 'test')
os.makedirs(train_dir, exist_ok=True)
os.makedirs(test_dir, exist_ok=True)
# 遍历所有图片文件
for i, image_file in enumerate(image_files):
# 获取原始文件路径和新文件路径
src_path = os.path.join(dataset_dir, image_file)
if i in test_indices:
dst_path = os.path.join(test_dir, image_file)
else:
dst_path = os.path.join(train_dir, f'{i:04d}.jpg') # 按照划分的顺序重新命名图片
# 复制文件到新路径
shutil.copyfile(src_path, dst_path)
```
其中,`path/to/dataset` 需要替换成你的图片数据集所在路径。这段代码假设所有图片都是以 `.jpg` 扩展名结尾的,如果你的图片格式不同,请修改相应代码。
阅读全文