📜  save_img keras - Python (1)

📅  最后修改于: 2023-12-03 15:34:49.017000             🧑  作者: Mango

Save_img in Keras-Python

在使用深度学习(neural networks)时,我们通常需要将大量的图像用来训练模型。然而,在实践中,我们很少能够使用原始图像尺寸来训练模型。因此,我们需要将图像进行裁剪、缩放、旋转、翻转等各种变换。但是,我们需要在每次模型训练之前从头开始进行这些变换,并将变换后的图像重新保存,这将会非常耗时。

为解决这个问题,Keras附带了一个ImageDataGenerator类,该类提供了一种简单的方法对数据进行增强(data augmentation)。然而,在某些情况下,我们可能希望对图像进行特定的预处理,并将其保存为numpy数组。因此,Keras还提供了save_img函数,它可以将numpy数组保存为图像文件。

介绍

save_img函数是Keras中的一个有用函数,我们可以使用该函数将numpy数组保存为图像。它是一个简单而有用的函数,输入为numpy数组和图像文件名。该函数负责将numpy数组解释为图像,并将其保存到文件名所指定的位置。下面是该函数的定义:

def save_img(path, x, data_format=None, file_format=None, scale=True):
    """
    Saves an image stored as a Numpy array to a path.
    """

要使用该函数,您需要提供以下两个参数:

  1. path:图像保存的路径,可以是绝对路径或相对路径。
  2. x:要保存的图像,numpy数组。

还有其他可选参数:

  • data_format(可选):数据格式,字符串类型,默认为Keras的配置文件中的图像数据格式,数据格式可以是:
    • "channels_last"(默认):宽度,高度和通道数的顺序分别为(宽度,高度,通道数)。
    • "channels_first":通道数,宽度和高度的顺序分别为(通道数,宽度,高度)。
  • file_format(可选):图像保存的文件格式,默认为None,此时根据文件名的后缀名来自动推断文件格式。支持以下三种格式:
    • 'png':Portable Network Graphics format。
    • 'jpeg':Joint Photographic Experts Group format。
    • 'bmp':Windows bitmap format。
  • scale(可选):是否将图像数组缩放到0到255之间的范围内。 默认为True。
使用

使用save_img函数非常简单。我们只需要将numpy数组和要保存的文件名传递给该函数就可以了。下面是一个简单的示例:

from keras.preprocessing.image import img_to_array, load_img
from keras.preprocessing.image import save_img

# load image as pixel array
image = load_img('sample.jpg')

# convert image to numpy array
image_array = img_to_array(image)

# save the image with a new name
save_img('new_image.jpg', image_array)

在这个示例中,我们使用了Keras的img_to_arrayload_img函数将图像加载为numpy数组,并将该数组保存为new_image.jpg文件。

请注意,您可以在调用save_img之前进行任何类型的预处理。例如,您可以将原始图像缩放到所需的大小,裁剪图像,将其转换为灰度等,然后再使用以下命令将其保存为图像:

save_img('new_image.jpg', processed_image_array)
结论

在Keras中使用save_img函数将numpy数组保存为图像是一项非常有用的技能。它允许您轻松地将处理的图像保存为图像文件,供训练模型使用。该函数不仅使用方便,而且可以与其他工具库(如OpenCV和Pillow)集成。