Files
zjsh_yolov11/tool/divide_f_2filim.py

48 lines
1.7 KiB
Python
Raw Permalink Normal View History

2026-03-10 13:58:21 +08:00
import os
import shutil
from pathlib import Path
# ================== 配置 ==================
SOURCE_DIR = "/media/hx/04e879fa-d697-4b02-ac7e-a4148876ebb0/dataset/1/class/class0/3" # 原始图片文件夹
OUTPUT_A = "/media/hx/04e879fa-d697-4b02-ac7e-a4148876ebb0/dataset/1/class/class0/2" # a 子文件夹
OUTPUT_B = "/media/hx/04e879fa-d697-4b02-ac7e-a4148876ebb0/dataset/1/class/class0/4" # b 子文件夹
# 支持的图片扩展名
IMG_EXTENSIONS = {'.jpg', '.jpeg', '.png', '.bmp', '.tiff', '.webp'}
# ================== 创建输出目录 ==================
os.makedirs(OUTPUT_A, exist_ok=True)
os.makedirs(OUTPUT_B, exist_ok=True)
# ================== 获取并排序图片 ==================
source_path = Path(SOURCE_DIR)
if not source_path.exists():
raise FileNotFoundError(f"源文件夹不存在: {SOURCE_DIR}")
# 获取所有图片文件,并按名称排序(确保顺序可重现)
image_files = sorted([
f for f in source_path.iterdir()
if f.is_file() and f.suffix.lower() in IMG_EXTENSIONS
])
if not image_files:
print("⚠️ 源文件夹中没有找到图片!")
exit()
print(f"共找到 {len(image_files)} 张图片,开始分配...")
# ================== 交替分配到 a 和 b ==================
for idx, img_path in enumerate(image_files):
if idx % 2 == 0:
# 偶数索引0, 2, 4...)→ a
dest = os.path.join(OUTPUT_A, img_path.name)
else:
# 奇数索引1, 3, 5...)→ b
dest = os.path.join(OUTPUT_B, img_path.name)
shutil.move(img_path, dest) # 移动原来数据
print(f"[{idx + 1}/{len(image_files)}] {img_path.name}{'a' if idx % 2 == 0 else 'b'}")
print("\n✅ 分配完成!")
print(f"a 文件夹: {OUTPUT_A}")
print(f"b 文件夹: {OUTPUT_B}")