【问题标题】:Image Augmentation using Keras in Python在 Python 中使用 Keras 进行图像增强
【发布时间】:2020-03-01 23:19:13
【问题描述】:

如何为文件夹中存储的多张图像应用 Keras Image Augmentation?

P.S:我为单个图像尝试了以下代码,效果很好。

有人可以帮我解决多张图片吗??

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

【问题讨论】:

    标签: python image image-processing keras


    【解决方案1】:

    最简单的方法是使用目录中的 ImageDataGenerator.flow。文档是 在https://keras.io/preprocessing/image/。图像将是一个形状数组 (batch_size, 200, 200, 3) 注意:每次运行它都会在 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()
    
    

    【讨论】:

    • 太棒了。谢谢!那行得通!它返回了我的图像目录中包含 25 个类的确切图像计数(1000 张图像)。我没有包含 save_to_dir 参数来保存将创建的新图像。因此,我如何从图像目录中为每个原​​始图像(1000 个原始图像)打印 batch_size 图像,而不是尝试保存它们?提前致谢!
    • 对不起,我不明白你的问题。打印图片?
    • 对不起,我的意思是查看/访问增强的图像。
    • 您可以在 for 循环 images[i] 中遍历图像并使用 matplotlib 显示它们。
    猜你喜欢
    • 2018-04-14
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2013-10-19
    • 2023-03-28
    • 2019-11-25
    • 2020-11-20
    相关资源
    最近更新 更多