前言
有时我们使用PIL库读入图像数据后需要查看图像数据的维度,比如shape,或者有时我们需要对图像数据进行numpy类型的处理,所以涉及到相互转化,这里简单记录一下。
方法
当使用PIL.Image.open()打开图片后,如果要使用img.shape函数,需要先将image形式转换成array数组。
import numpy as np
from PIL import Image
im = Image.open("test.png") #读入图片数据
img = numpy.array(im) #转换为numpy
此时例如要处理加入椒盐噪声,这时使用numpy数组进行处理:
for k in range(n):i = int(numpy.random.random() * img.shape[1]);j = int(numpy.random.random() * img.shape[0]);if img.ndim == 2:img[j,i] = 255elif img.ndim == 3:img[j,i,0]= 255img[j,i,1]= 255img[j,i,2]= 255
最后将array转化为image形式
img = Image.fromarray(img.astype('uint8')).convert('RGB')