Python Pillow 使用Numpy进行机器学习
在本章中,我们使用numpy来存储和操作图像数据,使用python图像处理库 – “pillow”。
在开始本章之前,以管理员身份打开命令提示符,并在其中执行以下命令以安装numpy −
pip install numpy
注意 − 只有在安装和更新PIP后才能正常工作。
从Numpy数组创建图像
使用PIL创建一个RGB图像并将其保存为jpg文件。在下面的示例中,我们将会做以下操作 −
- 创建一个150×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]]]
原始图片
由数组构建的图像