如何修改保留假彩色的灰度cmap?

2024-09-30 10:38:40 发布

您现在位置:Python中文网/ 问答频道 /正文

假设一个256灰度图像

如何修改颜色贴图灰色plt.cm使给定灰度值的像素以给定颜色(红色、蓝色…)显示。例如,如何将值为1的像素设置为红色,将值为2的像素设置为绿色?在

{我知道。但在这个例子中,似乎只能设置一种颜色。在

我尝试生成自定义cmap“agrey”(失败):

## try to make a custom cmap
Ngrey = 256
a = np.linspace(0,1,num=Ngrey, endpoint=True)
A = np.array((a,a,a)).transpose()

#Set pixel with greylevel=1 to red
A[1,1:3]=0

col_dict = {'red':A,'green':A, 'blue':A}
print col_dict['blue'].shape
agrey = LinearSegmentedColormap('mygray', col_dict)

Tags: to图像颜色npcolbluered像素
1条回答
网友
1楼 · 发布于 2024-09-30 10:38:40

不管怎样,在处理离散灰度时,您可以使用LinearSegmentedColormap,而不是使用ListedColormap,在这里定义256个灰色值,然后覆盖要着色的值。下面是一个随机图片的最小示例:

from matplotlib import pyplot as plt
from matplotlib.colors import ListedColormap
import numpy as np

pic = np.random.randint(256, size=(100,100))

Ngrey = 256
greys = np.linspace(0,1,Ngrey)

colors = [[g,g,g] for g in greys]

red = [1,0,0]
green = [0,1,0]
blue = [0,0,1]

colors[5] = red
colors[100] = blue
colors[200] = green

mymap=ListedColormap(colors)

plt.matshow(pic, cmap=mymap)
plt.show()

结果如下:random grey scale image with certain, discrete values coloured in red, green, and blue

Python 3.5上测试

相关问题 更多 >

    热门问题