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")
输出
创建灰度图像
创建灰度图像与创建 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]]]
原图
从数组构造的图像