从数据集中随机抽取部分图片到另一个文件夹
背景
由于电脑配置有限,做深度学习任务时,代码跑得太慢,因此对数据集进行缩小,而且我需要的是一个序列的数据集,数据图片不能集中在莫一块,人工划分费时费力,效果还不好。
我一共有五个文件夹,全部是雾天图片数据集。每个文件夹大概都有10000+的图片。目前
我只需要每个文件夹一千张。
代码
import os, random, shutil
def moveFile(fileDir):
pathDir = os.listdir(fileDir) #取图片的原始路径
filenumber=len(pathDir)
rate=0.1 #自定义抽取图片的比例,比方说100张抽10张,那就是0.1
picknumber=int(filenumber*rate) #按照rate比例从文件夹中取一定数量图片
sample = random.sample(pathDir, picknumber) #随机选取picknumber数量的样本图片
print (sample)
for name in sample:
shutil.move(fileDir+name, tarDir+name)
return
if __name__ == '__main__':
fileDir = "pair_wise_gaosu(11.20)/dataset/1000+/3000m/" #源图片文件夹路径
tarDir = 'pair_wise_gaosu(11.20)/dataset/1000+/' #移动到新的文件夹路径
moveFile(fileDir)
提取后,将其合并,例如:1-40m全部放在0-50m文件夹中,依次类推。即可随机抽取我们需要的图片数量。
本人原创,转载请附上链接:
https://editor.csdn.net/md?not_checkout=1&articleId=111709205
更改文件夹中的图片名
背景
为了方便我的tensorflow代码读取图片,文件名需要有特定的标签。
原始文件名:
我的训练代码是以$ 中 的 字 符 座 位 标 签 , 因 此 必 须 加 上 中的字符座位标签,因此必须加上 中的字符座位标签,因此必须加上$字符。
代码
import os
import re
import sys
data_dir = os.getcwd() + '\\' + 'dataset'
folder_list = os.listdir(data_dir)
folder_num = len(folder_list)
print(folder_list)
for i, folder_name in enumerate(folder_list): # 当前图像文件夹名称
print('\n当前场景文件夹名字为: %s\n' % folder_name)
image_list = os.listdir(data_dir + '\\' + folder_name)
image_num = len(image_list)
num = 1
for image_name in image_list:
#print('当前场景图像的名字为: %s' % image_name)
old_name = data_dir + '\\' + folder_name + '\\' + image_name
a = image_name[:-4]
new_name = data_dir + '\\' + folder_name + '\\' + folder_name + '$'+str(i)+'$' + '_' + str(num) + '.jpg'
os.rename(old_name, new_name)
num += 1
print('文件夹%s中的图像已更名完毕.' % folder_name)
print('---------------------------------------')
print('所有文件夹的图像重命名完毕.')
实现后结果: