python 将文件夹下图片随机抽取一定数量或比例,并复制/剪切到新文件夹

python 将文件夹下图片随机抽取一定数量或比例,并复制/剪切到新文件夹
源文件夹下有许多子文件夹,子文件夹里面才会有各种图片,需要我们先遍历源文件夹里面的所有图片再随机选取,最后复制选好的图片到新文件夹中。

#!-*-coding:UTF-8 -*-
import cv2
import numpy as np

import os
import random
import shutil

def getFileList(dir, Filelist, ext=None):
    # 获取文件夹及其子文件夹中文件列表
    # 输入 dir:文件夹根目录
    # 输入 ext: 扩展名
    # 返回: 文件路径列表
    
    newDir = dir
    if os.path.isfile(dir):#判断某一对象是否为文件
        if ext is None:
            
            Filelist.append(dir)
        else:
           
            if ext in dir[-3:]:
                
                Filelist.append(dir)

    elif os.path.isdir(dir):#判断某一对象是否为目录
        
        for s in os.listdir(dir):
            newDir = os.path.join(dir, s)
            getFileList(newDir, Filelist, ext)

    return Filelist

# 把下面改成你的参数设置
org_img_folder = 'xxx'  # 待处理源文件夹路径
tar_img_folder = 'xxx'     # 移动到新文件夹路径
pickpercent = 0.2  # 需要从源文件夹中抽取的图片比例
img_format = 'jpg' # 需要处理的图片后缀
i = 1  # 选取后的图片从1开始命名

# 检索源文件夹并随机选择图片
imglist = getFileList(org_img_folder, [], img_format)  # 获取源文件夹及其子文件夹中图片列表
#print("imglist",imglist)
picknumber = int(len(imglist)*pickpercent)
samplelist = random.sample(imglist, picknumber)  # 获取随机抽样后的图片列表

print('本次执行检索到 ' + str(len(imglist)) + ' 张图像\n')
print('本次共随机抽取百分之 ' + str(pickpercent*100) + '% 的图像\n')

# 复制选取好的图片到新文件夹中,并重新命名
new_img_folder = tar_img_folder
for imgpath in samplelist:
    print("imagepath",imgpath)
    name = str(i).zfill(5)  # 设置图片名为5位数,即从00001开始重新命名
    new_img_folder = os.path.join(tar_img_folder, name + '.' + img_format)
    i = i + 1 
    #如果不需要重命名就把上面三行注释掉
    shutil.move(imgpath, new_img_folder)  # 剪切图片到新文件夹
    #shutil.copy(imgpath, new_img_folder)  # 复制图片到新文件夹
    

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值