Увеличение изображения с использованием Keras в Python - PullRequest
0 голосов
/ 02 марта 2020

Как применить Keras Image Augmentation для нескольких изображений, хранящихся в папке?

PS: я попробовал приведенный ниже код для одного изображения, и он работал нормально.

Может ли кто-нибудь помочь мне решить для нескольких изображений ??

enter code here

from keras.preprocessing import image

import matplotlib.pyplot as plt
import cv2

from keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(
            rotation_range = 30, 
            width_shift_range = 0.2,
            height_shift_range = 0.2, 
            shear_range = 0.2, 
            zoom_range = 0.2,
            horizontal_flip = 0.2,
            fill_mode = "nearest")

for img in glob.glob("Images/*/*.jpg"):
    cv_img = cv2.imread(img)
    cv_resize = cv2.resize(cv_img,(200,200))
    cv_norm_img = cv_resize/255.0
    break


cv_norm_img = np.array(cv_norm_img)

input_batch = cv_norm_img.reshape((1,*cv_norm_img.shape))

i = 0

for output_batch in datagen.flow(input_batch,batch_size=1):
    plt.figure()
    imgplot = plt.imshow(image.img_to_array(output_batch[0]))
    i+=1
    if i==10:
        break
    plt.axis('off')
    plt.show

1 Ответ

0 голосов
/ 02 марта 2020

Самый простой способ - использовать ImageDataGenerator.flow из каталога. Документация на https://keras.io/preprocessing/image/. images будет массивом формы (batch_size, 200, 200, 3). Примечание: каждый раз, когда вы запускаете это, он помещает batch_size больше изображений в save_to_dir, поэтому вы можете не включать этот параметр. Вы можете получить доступ к отдельным изображениям как img1 = images [0], img2 = images [1] и т. Д. Настройте свой генератор следующим образом

datagen = ImageDataGenerator(rotation_range = 30, width_shift_range = 0.2,
                             height_shift_range = 0.2,
                             shear_range = 0.2, 
                             zoom_range = 0.2,
                             rescale=1/255,
                             horizontal_flip = True,
                             fill_mode = "nearest")
data=datagen.flow_from_directory(your_dir, target_size=(200, 200),
                                 batch_size=your_file_count, shuffle=False,
                                 save_to_dir=your_save_dir,save_format='png',
                                 interpolation='nearest')
images,labels=data.next()

...