天天看点

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