Python Pillow - 带有 Numpy 的机器学习

在本章中,我们使用 numpy 来存储和操作图像数据,使用 python 图像库——"pillow"。

在继续本章之前,以管理员模式打开命令提示符,并在其中执行以下命令来安装 numpy −

pip install numpy

注意 − 这仅在您安装并更新了 PIP 后才有效。


从 Numpy 数组创建图像

使用 PIL 创建 RGB 图像并将其保存为 jpg 文件。 在下面的例子中我们将 −

  • 创建一个 150 x 250 像素的数组。

  • 用橙色填充数组的左半部分。

  • 用蓝色填充数组的右半部分。

from PIL import Image
import numpy as np

arr = np.zeros([150, 250, 3], dtype=np.uint8)

arr[:,:100] = [255, 128, 0]

arr[:,100:] = [0, 0, 255]

img = Image.fromarray(arr)

img.show()

img.save("RGB_image.jpg")

输出

Numpy 数组

创建灰度图像

创建灰度图像与创建 RGB 图像略有不同。 我们可以使用二维数组来创建灰度图像。

from PIL import Image
import numpy as np

arr = np.zeros([150,300], dtype=np.uint8)

#Set grey value to black or white depending on x position
   for x in range(300):
      for y in range(150):
         if (x % 16) // 8 == (y % 16)//8:
            arr[y, x] = 0
         else:
            arr[y, x] = 255
img = Image.fromarray(arr)

img.show()

img.save('greyscale.jpg')

输出

灰度

从图像创建 numpy 数组

您可以将 PIL 图像转换为 numpy 数组,反之亦然。 下面是一个演示相同内容的小程序。

示例

#Import required libraries
from PIL import Image
from numpy import array

#Open Image & create image object
img = Image.open('beach1.jpg')

#Show actual image
img.show()

#Convert an image to numpy array
img2arr = array(img)

#Print the array
print(img2arr)

#Convert numpy array back to image
arr2im = Image.fromarray(img2arr)

#Display image
arr2im.show()

#Save the image generated from an array
arr2im.save("array2Image.jpg")

输出

如果将上面的程序保存为Example.py并执行 −

  • 它显示原始图像。

  • 显示从中检索到的数组。

  • 将数组转换回图像并显示它。

  • 由于我们使用了 show() 方法,因此使用默认的 PNG 显示实用程序显示图像,如下所示。

[[[ 0 101 120]
[ 3 108 127]
[ 1 107 123]
...
...
[[ 38 59 60]
[ 37 58 59]
[ 36 57 58]
...
[ 74 65 60]
[ 59 48 42]
[ 66 53 47]]
[[ 40 61 62]
[ 38 59 60]
[ 37 58 59]
...
[ 75 66 61]
[ 72 61 55]
[ 61 48 42]]
[[ 40 61 62]
[ 34 55 56]
[ 38 59 60]
...
[ 82 73 68]
[ 72 61 55]
[ 63 52 46]]]

原图

原始图像

从数组构造的图像

构造