Pillow和ndarray数组
ndarray 是 NumPy 中的数组类型,也称为 ndarray 数组,该数组可以与 Pillow 的 PIL.Image 对象实现相互转化。
ndarray数组创建图像
下面通过 ndarray 数组构建一个 Image 对象,并将图像显示出来。示例如下:
输出结果如下所示:#导入相关的包
from PIL import Image
#使用numpy之前需要提前安装
import numpy as np
#创建 300*400的图像,3个颜色通道
array = np.zeros([300,400,3],dtype=np.uint8)
#rgb色彩模式
array[:,:200]=[255,0,0]
array[:,200:]=[255,255,0]
img = Image.fromarray(array)
img.show()
img.save("C:/Users/Administrator/Desktop/数组生成图像.png")

图1:NumPy数组创建图像
图像转化为ndarray数组
下面将图像以 ndarray 数组的形式进行输出,示例如下:
图片展示结果:from PIL import Image
import numpy as np
img = Image.open("C:/Users/Administrator/Desktop/大熊猫.png")
img.show()
#Image图像转换为ndarray数组
img_2 = np.array(img)
print(img_2)
#ndarray转换为Image图像
arr_img = Image.fromarray(img_2)
#显示图片
arr_img.show()
#保存图片
arr_img.save("C:/Users/Administrator/Desktop/arr_img.png")

图2:显示原图
组成图片的像素点数组如下所示:
[[[113 108 105]
[118 113 110]
[139 131 128]
...
[139 148 155]
[137 146 153]
[139 148 155]]
[[ 97 92 89]
[124 118 115]
[137 129 126]
...
[143 152 159]
[140 149 156]
[140 149 156]]
[[102 97 94]
[123 118 115]
[135 128 125]
...
[144 153 160]
[142 151 158]
[143 152 159]]
...
[[168 175 134]
[175 183 142]
[151 162 120]
...
[ 99 143 66]
[111 155 77]
[131 175 98]]
[[152 164 118]
[147 160 114]
[140 156 109]
...
[123 167 87]
[126 171 90]
[120 165 84]]
[[136 154 104]
[127 145 95]
[156 176 125]
...
[168 213 130]
[142 187 104]
[ 69 114 31]]]