前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用numpy处理图片——分离通道

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

作者头像
方亮
发布2024-01-14 10:15:09
1310
发布2024-01-14 10:15:09
举报
文章被收录于专栏:方亮方亮
大纲
  • 读入图片
  • 分离通道
    • 堆叠法
    • 复制修改法
  • 生成图片

《使用numpy处理图片——滤镜》中,我们剥离了RGB中的一个颜色,达到一种滤镜的效果。

如果我们只保留一种元素,就可以做到PS中分离通道的效果。

读入图片

代码语言:javascript
复制
import numpy as np
import PIL.Image as Image

img = Image.open('the_starry_night.jpg')
data = np.array(img)

分离通道

堆叠法

堆叠法是先把各个通道分离出来,然后重构成二维数组。最后和其他值为0的同大小二维数组进行堆叠,构造成三维数组。

代码语言:javascript
复制
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))

复制修改法

复制修改法就是将原来的三维数组进行复制,然后针对性的修改第三维度上相应字段的值。

代码语言:javascript
复制
red, green, blue = data.copy(), data.copy(), data.copy()
red[:, :, (1,2)] = 0
green[:, :, (0,2)] = 0
blue[:, :, (0,1)] = 0

生成图片

原图

我们在一张图中展现各个通道。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大纲
  • 读入图片
  • 分离通道
    • 堆叠法
      • 复制修改法
      • 生成图片
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档