深度學習裡面最重要的是資料,而有時候資料很少,又或者樣本不均衡等問題,這時候就需要對圖像進行一系列的資料增強,旋轉就是常用的資料增強方式.至于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