49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
import os
|
|
import shutil
|
|
import random
|
|
|
|
def copy_random_images(src_dir, dst_dir, num_images=20, prefix=''):
|
|
"""
|
|
从源目录随机复制指定数量的图像到目标目录
|
|
:param src_dir: 源目录路径
|
|
:param dst_dir: 目标目录路径
|
|
:param num_images: 要复制的图像数量
|
|
:param prefix: 文件名前缀,用于区分不同来源
|
|
"""
|
|
# 确保目标目录存在
|
|
os.makedirs(dst_dir, exist_ok=True)
|
|
|
|
# 获取源目录中所有图像文件
|
|
image_files = [f for f in os.listdir(src_dir) if f.lower().endswith(('.jpg', '.jpeg', '.png'))]
|
|
|
|
# 随机选择指定数量的图像
|
|
selected_files = random.sample(image_files, min(num_images, len(image_files)))
|
|
|
|
# 复制文件
|
|
for file in selected_files:
|
|
src_path = os.path.join(src_dir, file)
|
|
dst_filename = f"{prefix}{file}" if prefix else file
|
|
dst_path = os.path.join(dst_dir, dst_filename)
|
|
shutil.copy2(src_path, dst_path)
|
|
print(f"已复制: {file} -> {dst_filename}")
|
|
|
|
print(f"已完成复制 {len(selected_files)} 张图像到 {dst_dir}")
|
|
|
|
if __name__ == "__main__":
|
|
# 目标目录
|
|
destination_dir = r"F:\myprojects\啾啾救援识别系统\JJCarDetection\datasets\猫狗\train\images"
|
|
|
|
# 复制猫图片
|
|
cat_source = r"F:\myprojects\cats_and_dogs_filtered\train\cats"
|
|
print("正在复制猫图片...")
|
|
copy_random_images(cat_source, destination_dir, 20, prefix='cat_')
|
|
|
|
# 复制狗图片
|
|
dog_source = r"F:\myprojects\cats_and_dogs_filtered\train\dogs"
|
|
print("正在复制狗图片...")
|
|
copy_random_images(dog_source, destination_dir, 20, prefix='dog_')
|
|
|
|
print("所有图片复制完成!")
|
|
|