使用numpy处理图片——分离通道

发布时间:2024年01月13日

《使用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

生成图片

原图
在这里插入图片描述

我们在一张图中展现各个通道。
在这里插入图片描述

文章来源:https://blog.csdn.net/breaksoftware/article/details/135576269
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。