📅  最后修改于: 2023-12-03 15:34:49.017000             🧑  作者: Mango
在使用深度学习(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.
"""
要使用该函数,您需要提供以下两个参数:
还有其他可选参数:
data_format
(可选):数据格式,字符串类型,默认为Keras的配置文件中的图像数据格式,数据格式可以是:file_format
(可选):图像保存的文件格式,默认为None,此时根据文件名的后缀名来自动推断文件格式。支持以下三种格式: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_array
和load_img
函数将图像加载为numpy数组,并将该数组保存为new_image.jpg
文件。
请注意,您可以在调用save_img
之前进行任何类型的预处理。例如,您可以将原始图像缩放到所需的大小,裁剪图像,将其转换为灰度等,然后再使用以下命令将其保存为图像:
save_img('new_image.jpg', processed_image_array)
在Keras中使用save_img
函数将numpy数组保存为图像是一项非常有用的技能。它允许您轻松地将处理的图像保存为图像文件,供训练模型使用。该函数不仅使用方便,而且可以与其他工具库(如OpenCV和Pillow)集成。