ImageDataGenerator扩充数据集

keras在使用时候扩充数据集图片,但是图片出现了一定的问题,四周出现了长条状东西,更换了填充模式还是存在

import os
from keras.preprocessing.image import ImageDataGenerator,img_to_array,load_img

data_generator=ImageDataGenerator(
        rotation_range=45,
        width_shift_range=0.2,
        height_shift_range=0.3,
        brightness_range=(0.5,0.9),
        zoom_range=[0.5,1.1],
        horizontal_flip=True,
        vertical_flip = True,
        #fill_mode=' '
        )
path=r"C:\Users\PC\Desktop\koutu\baiyunyan"
for i in os.listdir(path):
    address=os.path.join(path,i)
    img=load_img(address)
    image=img_to_array(img)
    image=image.reshape((1,)+image.shape)#需要四维
    j=0
    for i in data_generator.flow(image,batch_size=1,
                            save_to_dir=r"C:\Users\PC\Desktop\koutu\456",
                            save_prefix='baiyunyan', 
                            save_format='png'):      
        j+=1
        if(j>=5):
            break;    
print("全部完成")

问题已经找到了:原来是做zoom_range命令时会出现长条状,此时,我们可以将模式调整为“
wrap“或者我们调整其代表值,将值改为大于1的数。此方法生成图片数量太慢。我们使用flow_from_directory批量快速扩充:

from keras.preprocessing import image
datagen = image.ImageDataGenerator(shear_range=0.5, horizontal_flip=True, vertical_flip=True)
gen_data = datagen.flow_from_directory(r"D:/论文/123",#扩充图片数据集的父目录处即可 
                                       batch_size=1, 
                                       shuffle=False, 
                                       save_to_dir=r"D:/论文/kuochong",   #扩充图片放置的地方
                                       save_prefix='b_h',
                                       save_format='jpg',
									   target_size=(1024,1024)
                                       )

for i in range(6):
     gen_data.next()

你可能感兴趣的:(python)