随机地将文件夹中的部分图片转移到另一文件夹,最近在做一个网络模型的训练,发现测试集里的图片相对有点多,于是想按类别分别将测试集对应类别文件夹下的图片随机选取一半转移到训练集对应的类别文件夹下,但几百个类别,手动转移太麻烦,于是写了一段代码代替手动转移图片。
nowpath:转移图片的原文件夹,即测试集的文件夹
newpath:转移图片的目标文件夹,即训练集的文件夹
代码实现:
def transferPictures(nowpath,newpath):
#将文件夹下的不同类别的文件夹中的部分图片转移到另一个文件夹下的相同类别的文件夹下,并删除原文件夹中的相应图片(类似于剪切)
for roots,dirs,files in os.walk(nowpath):
for i in dirs:
for roots,dirs,files in os.walk(nowpath+i):
fnum = len(files) // 2 #计算一半数量
rdom_files = random.sample(files, fnum) #随机选一半数量的图片
for imgname in rdom_files:
imgpath = nowpath+i + '/' + imgname
#print(imgpath)
for roots,dirs,files in os.walk(newpath):
if i in dirs:
im=Image.open(imgpath)
im.save(newpath+i+'/a'+imgname)
os.remove(imgpath) #转移完后删除原图片
transferPictures('./test/','./train/')