簡體   English   中英

如何修改帶有保留假色的灰色cmap?

[英]How to modify a gray cmap with reserved false color?

假設256灰度圖像,

如何修改顏色貼圖plt.cm.gray,以便給定灰度值的像素以給定顏色(紅色,藍色......)出現。 例如,如何將value = 1的像素設置為紅色,將value = 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)

無論如何,當您處理離散灰度時,您可以使用ListedColormap ,而不是使用LinearSegmentedColormap ,您可以在其中定義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()

結果看起來像這樣: 隨機灰度圖像,具有紅色,綠色和藍色的某些離散值

Python 3.5上測試過

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM