codecamp

Pillow和ndarray数组

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("../数组生成图像.png")

输出结果如下所示:

pillow图像处理

图1:NumPy数组创建图像


图像转化为ndarray数组

下面将图像以 ndarray 数组的形式进行输出,示例如下:

from PIL import Image
import numpy as np
img = Image.open("../大熊猫.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("../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]]]


pillow 为图片添加水印
pillow 分解gif动态图
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }