如何用matplotlib imshow()改变每种颜色的vmin和vmax

时间:2017-02-02 17:44:15

标签: python matplotlib

我有一个RGB图像(N x N x 3矩阵),我试图用matplotlib.pyplot.imshow()显示。红色通道与其他通道相比暗淡,但我还没有找到一种方法来改变vmin和vmax仅用于红色。是否可以改变每个通道的亮度/对比度?也许我可以直接操纵矩阵,但这听起来并不太有趣......

1 个答案:

答案 0 :(得分:1)

使用numpy操作图像非常简单。

import matplotlib.pyplot as plt
import numpy as np

image = plt.imread("https://i.stack.imgur.com/9qe6z.png")
print image.shape
print image.max()


def channelnorm(im, channel, vmin, vmax):
    c = (im[:,:,channel]-vmin) / (vmax-vmin)
    c[c<0.] = 0
    c[c>1.] = 1
    im[:,:,channel] = c
    return im

fig, (ax, ax2) = plt.subplots(ncols=2, figsize=(7,3))
ax.imshow(image)

vmin = 0.1
vmax = 0.5
channel = 0 # red
image2  = channelnorm(image, channel, vmin, vmax)
ax2.imshow(image2)

plt.show()

enter image description here