如何显示灰度图像的彩色图?

时间:2017-08-28 09:51:56

标签: python-2.7 matplotlib

我有一张尺寸为128x128x64且尺寸为64的3D图像,每张图片的尺寸为128x128。图像呈现三个类,标签是0背景,1个第一个对象,2秒对象。我正在使用matplotlib来显示图片。

import matplotlib.pyplot as plt
fig = plt.figure(figsize=(32,32))
ax1 = plt.add_subplot(111)
ax1.imshow(image[:, :, 32])

我想在彩色地图中显示它。其中,背景应为黑色,对象1为红色,对象2为绿色。我该如何修改代码?谢谢 预期结果类似于图的左下角 enter image description here

1 个答案:

答案 0 :(得分:2)

你的问题不是很清楚。你说你想获得一个像左下图那样的结果,但是这个图像有阴影和各种级别的绿色和红色。

根据你的问题,我知道你有一个只有3个可能值的128x128数组:0.(背景),1.(第一个对象)和2.(第二个对象)。那是对的吗?如果是这样,实质上你的问题归结为如何创建一个3级的离散色图,黑色,红色,绿色。

以下是我要做的事情:

# Generate some fake data for testing
img = np.zeros((128,128))  # Background
img[:50,:50] = np.ones((50,50))  # Object 1
img[-50:,-50:] = np.ones((50,50))*2  # Object 2

#>img
#>array([[ 1.,  1.,  1., ...,  0.,  0.,  0.],
#        [ 1.,  1.,  1., ...,  0.,  0.,  0.],
#        [ 1.,  1.,  1., ...,  0.,  0.,  0.],
#        ..., 
#        [ 0.,  0.,  0., ...,  2.,  2.,  2.],
#        [ 0.,  0.,  0., ...,  2.,  2.,  2.],
#        [ 0.,  0.,  0., ...,  2.,  2.,  2.]])





# Create a custom discret colormap
from matplotlib.colors import LinearSegmentedColormap
cmap = LinearSegmentedColormap.from_list("3colors", ['k','r','g'], N=3)



# Plot
# Don't forget to includes the bounds of your data (vmin/vmax)
# to scale the colormap accordingly
fig,ax = plt.subplots()
im = ax.imshow(img, cmap=cmap, vmin=0, vmax=2)
ax.grid(False)
cax = fig.colorbar(im)
cax.set_ticks([0,1,2])

enter image description here