天天看點

python多程序批量讀取圖檔以及對圖檔批量旋轉等資料增強 python對圖像旋轉顯示等

深度學習裡面最重要的是資料,而有時候資料很少,又或者樣本不均衡等問題,這時候就需要對圖像進行一系列的資料增強,旋轉就是常用的資料增強方式.至于python如何對圖像旋轉,在之前的文章就有所介紹,

python對圖像旋轉顯示等

這裡不詳細細談,一般直接想到的就是添加一個循環,按照循序讀取圖檔,如果圖檔隻有幾千張,那可能值耗費幾十分鐘,但如果圖像有上百萬張,那麼就需要耗費一天,甚至更多的時間,這時候就需要多程序來實作,python多程序雖然比不上c++等其他語言,但是python勝在友善,同樣也能縮小很長的時間,本文的例子主要是用multiprocessing這個庫.

直接看代碼

#coding=utf-8
'''
#====================
#測試一下程序
#====================
'''

from multiprocessing import Pool
import scipy
from scipy import misc
import os
import time
import glob
from scipy import ndimage
start = time.time()
def get_image_paths(folder): #這個函數的作用的擷取檔案的清單,注釋部分是擷取
    # return (os.path.join(folder, f)
    #     for f in os.listdir(folder)
    #         if 'png' in f)  
    return glob.glob(os.path.join(folder, '*.png'))


def create_read_img(filename):
    im = misc.imread(filename)		#讀取圖像
    img_rote = ndimage.rotate(im, 90) #旋轉90度
    #scipy.misc.imsave('...',img_rote)
img_path = '存放圖像的目錄/'
imgs = get_image_paths(img_path)
print imgs

pool = Pool()
pool.map(create_read_img,imgs)
pool.close()
pool.join()
# for i in imgs:
#     create_read_img(i)  這部分是循環,可以用來對比時間

end = time.time()
print end - start