python3中imread用法_如何使用misc.imread将图像分为红、绿、蓝三个通道

所以,你想用不同的颜色显示图像的不同RGB通道。。。import matplotlib.pyplot as plt

from matplotlib.cbook import get_sample_data

image = plt.imread(get_sample_data('grace_hopper.jpg'))

titles = ['Grace Hopper', 'Red channel', 'Green channel', 'Blue channel']

cmaps = [None, plt.cm.Reds_r, plt.cm.Greens_r, plt.cm.Blues_r]

fig, axes = plt.subplots(1, 4, figsize=(13,3))

objs = zip(axes, (image, *image.transpose(2,0,1)), titles, cmaps)

for ax, channel, title, cmap in objs:

ax.imshow(channel, cmap=cmap)

ax.set_title(title)

ax.set_xticks(())

ax.set_yticks(())

plt.savefig('RGB1.png')

注意,当你有一个黑暗的房间,黑暗的桌子上有一支红色的钢笔,如果你打开一盏红色的灯,你会感觉到钢笔几乎是白色的。。。

另一种可能是为每种颜色创建不同的图像,其他颜色的像素值变为零。从我们离开的地方开始,我们定义了一个函数,将一个通道提取到另一个黑色图像中...

from numpy import array, zeros_like

def channel(image, color):

if color not in (0, 1, 2): return image

c = image[..., color]

z = zeros_like(c)

return array([(c, z, z), (z, c, z), (z, z, c)][color]).transpose(1,2,0)

最后用它。。。colors = range(-1, 3)

fig, axes = plt.subplots(1, 4, figsize=(13,3))

objs = zip(axes, titles, colors)

for ax, title, color in objs:

ax.imshow(channel(image, color))

ax.set_title(title)

ax.set_xticks(())

ax.set_yticks(())

plt.savefig('RGB2.png')

我不知道我更喜欢哪一个版本,也许第一个版本对我来说更真实(也许看起来不那么人为),但它很主观。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值