Pillow和ndarray数组

11个月前 (04-28)
NumPy 是 Python 科学计算的基础数据包,它被大量的应用于机器学习领域,比如图像识别、自然语言处理、数据挖掘等。想了解学习 NumPy,可跳转《NumPy快速入门教程》。

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")

输出结果如下所示:

pillow图像处理

图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")

图片展示结果:

pillow图像处理
图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]]]