读取指定路径下的图片并将该文件下的所有图片名写入txt文件当中——>在刚保存的txt文件中随机选取若干样本保存到另一txt文件当中——>将样本图片复制到指定路径文件夹下

该文只是记录下学习读取大样本图片,随机选取其中的样本图片复制到指定路径下。可以跳过第二步。

目录

读取路径下的所有图片并将文件名保存到txt文件当中

在上述txt文件下随机选取一定图片保存到另一txt当中

将随机选取的图片复制到另一指定文件下


读取路径下的所有图片并将文件名保存到txt文件当中

import os
import argparse
import numpy as np

parser = argparse.ArgumentParser()
parser.add_argument('--path', type=str,default="path1", help='path to the dataset')
parser.add_argument('--output', type=str,default="path2/b.flist", help='path to the file list')
args = parser.parse_args()

ext = {'.JPG', '.JPEG', '.PNG', '.TIF', 'TIFF'}

images = []
for root, dirs, files in os.walk(args.path):
    print('loading ' + root)
    for file in files:
        if os.path.splitext(file)[1].upper() in ext:
            images.append(os.path.join(root, file))

images = sorted(images)
np.savetxt(args.output, images, fmt='%s')

在上述txt文件下随机选取一定图片保存到另一txt当中

import random
import os
import numpy as np
import glob

#加载txt文件
def load_flist(flist):
    if isinstance(flist, list):
        return flist

    # flist: image file path, image directory path, text file flist path
    if isinstance(flist, str):
        if os.path.isdir(flist):
            flist = list(glob.glob(flist + '/*.jpg')) + list(glob.glob(flist + '/*.png'))
            flist.sort()
            return flist
        if os.path.isfile(flist):
            try:
                return np.genfromtxt(flist, dtype=np.str, encoding='utf-8')
            except:
                return [flist]
    os.path.isfile('path3/a.flist'))
    #返回列表
    return []

#写入文件名
def log(file,path):
    with open(path, 'a') as f:
        f.write('%s\n' % file)
k=[]
for i in range(20):
    yangben = random.randint(0, 100)
    k.append(yangben)
#上一步保存的txt文件
path='path2/b.flist'
for j in range(20):
    yang=load_flist(path)
    indx=k[j]
    log(yang[indx],'path4\yangben.flist') #path4\yangben.flist为随机选取后的txt文件

将随机选取的图片复制到另一指定文件下

import shutil

# 源文件夹和目标文件夹路径

#path6要复制的源文件目录
folder_A = "path6"
#path7目标目录
folder_B = "path7"

# 读取包含文件名的txt文件
txt_file = "path4\yangben.flist"

with open(txt_file, "r") as file:
    for line in file:
        # 获取文件名并去除换行符
        filename = line.strip('\n')
        # 复制文件
        shutil.copy(filename, folder_B)

print("文件复制完成")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值