Keras 深度学习库提供了用于加载、准备和扩展图像数据的复杂API。
在本教程中,将介绍如何使用 基于 TensorFlow 2.0 的 Keras API 提供的基本图像处理函数。

完成本教程后,您将知道:

  • 使用 Keras API 加载和显示图像
  • 使用 Keras API 将图像在 NumPy 数组和 PIL 格式之间相互转换
  • 使用 Keras API 保存将图像保存到文件中

加载图像

Keras 提供 load_img() 函数,可以将图像从文件中加载为 PIL 格式图像对象。
下面的例子演示如何从文件中加载图片并将图像显示出来:

# 使用 Keras API 加载图像的示例
from tensorflow.keras.preprocessing.image import load_img
# 从文件中加载图片
img = load_img('timg.jpg')
# 打印图像的详细信息
print(type(img))     # class 'PIL.JpegImagePlugin.JpegImageFile'>
print(img.format)    # JPEG
print(img.mode)        # RGB
print(img.size)        # (400, 302)
# 显示图像方法1
img.show()            # 使用主机默认应用程序显示加载的图像
# 显示图像方法2
import matplotlib.pyplot as plt # plt 用于显示图片
plt.imshow(img)
plt.show()

load_img() 函数返回一个 PIL 图像实例,它的参数如下:

  • path, 图像文件的路径
  • color_mode, 期望的图片模式,可选值为 "grayscale","rgb","rgba" 其中之一,默认为 "rgb"。
  • target_size,目标图像大小,“None”(默认为原始大小) 或 int 类型的 ' (img_height, img_width) ' 的元组。
  • interpolation,如果目标大小与加载的图像大小不同,插值方法用于对图像进行重采样。

转换图像

Keras 提供的 img_to_array() 函数,用于将加载的 PIL 格式的图像转换成 NumPy 数组。array_to_img() 函数可用于将一个 NumPy 像素数据数组转换成 PIL 图像。

下面的例子载入测试图像,将它转换成 NumPy 数组,然后再转换回 PIL 图像。

# 使用 Keras API 转换图像的示例
from tensorflow.keras.preprocessing.image import load_img
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.preprocessing.image import array_to_img
# 加载图片
img = load_img('timg.jpg')
print(type(img))                    # <class 'PIL.JpegImagePlugin.JpegImageFile'>
# 转换到 numpy array
img_array = img_to_array(img)
print(img_array.dtype)                # float32
print(img_array.shape)                # (427, 640, 3)
# 转换回 image
img_pil = array_to_img(img_array)
print(type(img_pil))                # <class 'PIL.JpegImagePlugin.JpegImageFile'>

保存图像

Keras API 提供了 save_img() 函数来将图像保存到文件中。该函数以 NumPy 数组格式保存图像和图像数据。保存的文件格式从文件名推断,但也可以通过 file_format参数指定。如果您已经对图像像素数据进行了操作,例如缩放,并且希望保存图像以供以后使用,那么这将非常有用。

下面的示例以灰度格式加载照片图像,将其转换为 NumPy 数组,并将其保存为新文件名:

# 使用 Keras API 保存图像的示例
from tensorflow.keras.preprocessing.image import load_img
from tensorflow.keras.preprocessing.image import save_img
from tensorflow.keras.preprocessing.image import img_to_array
# 加载图像(灰度模式)
img = load_img('timg.jpg', grayscale=True)
# 将图像转换为 numpy array
img_array = img_to_array(img)
# 用新的文件名保存图像
save_img('timg_grayscale.jpg', img_array)

标签: Keras, 人工智能, AI, TensorFlow

添加新评论