隨機地將文件夾中的部分圖片轉移到另一文件夾,最近在做一個網絡模型的訓練,發現測試集裏的圖片相對有點多,於是想按類別分別將測試集對應類別文件夾下的圖片隨機選取一半轉移到訓練集對應的類別文件夾下,但幾百個類別,手動轉移太麻煩,於是寫了一段代碼代替手動轉移圖片。
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/')