【相關學習推薦:python教學】
前言
在我對項目組的一些訓練圖像進行預處理的時候,發現處理的圖像是分好了類,在文件夾裡的文件夾裡,套娃式存儲的,所以對我批處理,以及按原資料夾規則進行儲存的時候,就會造成很大困擾
但透過下面幾個函數的結合,幫我順利的完成了一系列的預處理。
一、用不膩的芷山庫
#1.安裝庫
pip安裝:
pip install zisan
2.getFiles函數
函數呼叫:
import zisan.FileTools as zf file_path = 'C:/Users/xxx/Desktop/2016/Annotations' whole_file = zf.getFiles(file_path)
圖片儲存在:件夾2016 -> 資料夾Annotations -> ;子資料夾-> 00000.png
透過getFiles函數,可以將Annotations中的所有資料夾裡的所有圖片路徑調出來
也就是說,getFiles函數是將資料夾裡面的所有檔案路徑都調出來,不管中間有無子資料夾
二、其他函數
1.os.listdir函數
此函數呼叫後會傳迴路徑底下資料夾的名稱,以字串的形式儲存在清單中
程式碼如下:
import os file_path = 'C:/Users/xxx/Desktop/2016/Annotations' file_names = os.listdir(file_path) print(file_names)
效果:
#2.os.mkdir函數
程式碼:
import os new_file_path = 'C:/Users/xxx/Destop/2016/newfile' os.mkdir(new_file_path)
用於建立新資料夾
三、運用
要求:處理Annotations資料夾中的每個子文件夾中的圖片,並依原本的規則儲存在newfile新資料夾裡的對應位置,命名規則如00000.jpg
import zisan.FileTools as zf import os import cv2 from skimage import io file_path = 'C:/Users/xxx/Desktop/2016/Annotations' new_file_path = 'C:/Users/xxx/Destop/2016/newfile' file_names = os.listdir(file_path) #获取Annotations文件夹的子文件夹名称 for i in file_names: #遍历每个子文件夹名称 Index = 0 file_name = file_path + '/' + i #巧妙运用+号得到改子文件夹的路径 os.mkdir(new_file_path + '/' + i) #在newfile里创建一个与子文件夹名称相同的文件夹 whole_pic = zf.getFiles(file_name) #用getFiles函数读取子文件夹内的图片路径 for f in whole_pic: msk = io.imread(f) msk=cv2.cvtColor(msk,cv2.COLOR_RGBA2GRAY) msk[np.where(msk!=0)]=255 io.imsave(new_file_path + '/' + i + '/' + str("%05d" % Index) + '.jpg' , msk) #处理命名可直接+'.jpg'让其以jepg形式存储 Index += 1
這就是我解決資料夾處理問題的基本思路和流程,各個函數可以搭配使用,放入循環外或內部依具體要求有不同的效果。
以上是如何透過Python批次處理套娃式資料夾的詳細內容。更多資訊請關注PHP中文網其他相關文章!