在《使用numpy处理图片——滤镜》中,我们剥离了RGB中的一个颜色,达到一种滤镜的效果。
如果我们只保留一种元素,就可以做到PS中分离通道的效果。
import numpy as np
import PIL.Image as Image
img = Image.open('the_starry_night.jpg')
data = np.array(img)
堆叠法是先把各个通道分离出来,然后重构成二维数组。最后和其他值为0的同大小二维数组进行堆叠,构造成三维数组。
colorDim3List = np.dsplit(data, 3)
red = colorDim3List[0].reshape(data.shape[0], data.shape[1])
green = colorDim3List[1].reshape(data.shape[0], data.shape[1])
blue = colorDim3List[2].reshape(data.shape[0], data.shape[1])
zeros = np.zeros_like(blue)
red = np.dstack((red, zeros, zeros))
green = np.dstack((zeros, green, zeros))
blue = np.dstack((zeros, zeros, blue))
复制修改法就是将原来的三维数组进行复制,然后针对性的修改第三维度上相应字段的值。
red, green, blue = data.copy(), data.copy(), data.copy()
red[:, :, (1,2)] = 0
green[:, :, (0,2)] = 0
blue[:, :, (0,1)] = 0
原图
我们在一张图中展现各个通道。