📜  在Python中使用 Keras 进行图像处理

📅  最后修改于: 2022-05-13 01:55:39.367000             🧑  作者: Mango

在Python中使用 Keras 进行图像处理

在本文中,我们将在Python中使用 Keras 进行图像处理。 Keras API 是一个深度学习库,提供加载、准备和处理图像的方法。

我们将在本文中介绍以下几点:

  • 加载图像
  • 处理图像
  • 将图像转换为数组,反之亦然
  • 更改图像的颜色
  • 过程图像数据集

加载图像

在 Keras 中,load_img()函数用于加载图像。使用 load_img() 方法加载的图像是 PIL 对象。某些信息可以从加载的图像中访问,例如图像类型是 PIL 对象,格式是 JPEG,大小是(6000,4000),模式是 RGB 等。我们在整篇文章中都使用狗图像。

Python3
import keras
from keras.preprocessing.image import load_img
  
# load the image
img = load_img('dog.jpg')
  
# find more about the image
print(type(img))
print(img.format)
print(img.mode)
print(img.size)
  
# show the image
img.show()


Python3
img = load_img('dog.jpg')
  
# change image size
image = img.resize([30, 30])
  
# print new image size
print(image.size)


Python3
# convert image into array
from keras.preprocessing.image import img_to_array
from keras.preprocessing.image import array_to_img
  
# convert to numpy array
img_array = img_to_array(img)
print(img_array[0])
print(img_array.dtype)
print(img_array.shape)
  
# convert back to image
img = array_to_img(img_array)
print(type(img))


Python3
from keras.preprocessing.image import save_img
from keras.preprocessing.image import img_to_array
  
# load image as as grayscale
img = load_img('dog.jpg', grayscale=True)
  
# convert image to a numpy array
img_array = img_to_array(img)
  
# save the image with a new filename
save_img('dog_grayscale.jpg', img_array)
  
# load the image to confirm it was saved
# correctly
img = load_img('dog_grayscale.jpg')
print(type(img))
print(img.format)
print(img.mode)
print(img.size)
img.show()


Python3
from keras.datasets import mnist
  
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
  
# reshape the image
images = X_train.reshape(-1, 28, 28, 1).astype('float64')
  
print(images.shape)
print(type(images))
print(images.size)


输出:

调整图像大小

在训练任何模型之前,我们可以对图像执行某些功能,例如调整大小、更改颜色、转换为数组等。要调整图像的形状,在图像上调用 resize() 方法。我们要转换图像的大小应该是可迭代的。

Python3

img = load_img('dog.jpg')
  
# change image size
image = img.resize([30, 30])
  
# print new image size
print(image.size)

输出:

(30, 30)

我们可以在输出中看到,30 x 30 是图像的新尺寸。

将图像转换为数组

有 img_to_array() 方法将图像转换为数组,array_to_img() 方法将图像数组转换回图像。在下面的示例中,我们只是访问图像数组的第 0索引。我们可以获得图像数组的形状、类型等信息。当图像数组转换为图像时,它又是一个 PIL 对象。

Python3

# convert image into array
from keras.preprocessing.image import img_to_array
from keras.preprocessing.image import array_to_img
  
# convert to numpy array
img_array = img_to_array(img)
print(img_array[0])
print(img_array.dtype)
print(img_array.shape)
  
# convert back to image
img = array_to_img(img_array)
print(type(img))

输出:

更改图像的颜色

要将彩色图像转换为灰度,只需在 load_img() 方法中设置 grayscale = True 。要保存转换后的图像,我们需要将图像转换为数组,否则 save_img() 方法会抛出错误。将图像转换为灰度图像后,我们看到它仍然显示为 RGB 模式,并且大小相同。

Python3

from keras.preprocessing.image import save_img
from keras.preprocessing.image import img_to_array
  
# load image as as grayscale
img = load_img('dog.jpg', grayscale=True)
  
# convert image to a numpy array
img_array = img_to_array(img)
  
# save the image with a new filename
save_img('dog_grayscale.jpg', img_array)
  
# load the image to confirm it was saved
# correctly
img = load_img('dog_grayscale.jpg')
print(type(img))
print(img.format)
print(img.mode)
print(img.size)
img.show()

输出:

处理图像数据集

要从图像数据集中加载图像,简单的方法是在图像数据集上使用 load_data()。我们正在使用 Keras 中已经提供的 mnist 数据集。它将返回 x_train、y_train、x_test 和 y_test。 x_train 和 y_train 将用于训练模型,x_test 和 y_test 将用于测试目的。我们可以使用 reshape() 方法对数据集中的所有图像进行整形,并定义哪种类型的图像应该像“float64”或“float32”。

Python3

from keras.datasets import mnist
  
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
  
# reshape the image
images = X_train.reshape(-1, 28, 28, 1).astype('float64')
  
print(images.shape)
print(type(images))
print(images.size)

输出:

我们在上面的输出中看到,mnist 中的 60000 张图像已被重新整形为 28 x 28 大小,并且图像的类型为 numpy n 维数组。