指定文件夹随机筛出图像

指定文件夹随机筛选图像

1

  1. 遍历 G:\Data\train 下所有以数字命名的子文件夹。

  2. 在每个子文件夹的 spoof 目录中,随机抽取 1 张图像(由 images_per_folder=1 控制)。

  3. 将所选图像复制到 H:\copy,并在文件名前加上原子文件夹名作为前缀以防重名。


示例

  • 源目录结构(执行前)

G:\Data\train
├─ 1001
│  └─ spoof
│     ├─ a.jpg
│     ├─ b.jpg
│     └─ c.jpg
├─ 1002
│  └─ spoof
│     ├─ x.png
│     └─ y.png
└─ other_folder   (因非数字命名,将被跳过)
  • 目标目录(执行后)

H:\copy
├─ 1001_b.jpg      ← 从 1001\spoof 随机抽取 b.jpg,并重命名为 1001_b.jpg
├─ 1002_x.png      ← 从 1002\spoof 随机抽取 x.png,并重命名为 1002_x.png

控制台输出示例:

[完成] 从 G:\Data\train\1001\spoof 复制 1 张图片
[完成] 从 G:\Data\train\1002\spoof 复制 1 张图片

✅ 所有 spoof 图像复制完成!

1

import os
import shutil
import random

# 源数据根目录(train)
source_root = r'G:\Data\train'

# 目标目录(你可以改成任意你想要保存的路径)
target_dir = r'H:\copy'

# 每个 spoof 文件夹选多少张图
images_per_folder = 1

# 确保目标目录存在
os.makedirs(target_dir, exist_ok=True)

# 遍历所有数字子文件夹
for subfolder_name in os.listdir(source_root):
    subfolder_path = os.path.join(source_root, subfolder_name)
    
    # 判断是否为数字命名的文件夹
    if not subfolder_name.isdigit():
        continue

    spoof_path = os.path.join(subfolder_path, 'spoof')
    
    if not os.path.exists(spoof_path):
        print(f"[跳过] 未找到 spoof 文件夹: {spoof_path}")
        continue

    # 获取所有图像文件(你可以加 .jpg 过滤)
    image_files = [f for f in os.listdir(spoof_path) if os.path.isfile(os.path.join(spoof_path, f))]
    
    if len(image_files) < images_per_folder:
        print(f"[跳过] 图片不足 {images_per_folder} 张: {spoof_path}")
        continue

    selected_images = random.sample(image_files, images_per_folder)

    for img_name in selected_images:
        src = os.path.join(spoof_path, img_name)
        # 防止文件重名,加入文件夹前缀
        dst = os.path.join(target_dir, f"{subfolder_name}_{img_name}")
        shutil.copy2(src, dst)
    
    print(f"[完成] 从 {spoof_path} 复制 1 张图片")

print("\n✅ 所有 spoof 图像复制完成!")

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值