我得到了一个分割蒙版:一个HxW numpy数组,其中每个位置代表一个像素。但是,每个位置的值都不是RGB。它是一个0-60范围内的任意整数,其中的整数只是表示图像内容类型的代码。
例如值为12的数组位置表示归类为“表格”的像素;值为34的位置表示归类为“地毯”的像素。
我想使用tkinter
将此分段蒙版加载到画布中,所以我需要用它制作图像,并且我需要每个0-60值来对应其色相截然不同的颜色可以。
如何选择这些颜色?如何将HxW阵列转换为RGB图像?
答案 0 :(得分:2)
恕我直言,要做的显而易见的事情是制作一个调色板化的图像,其中您有60种颜色的调色板,并且在每个位置都有索引到调色板中。使用PIL /枕头非常简单。
现在您要选择这60种颜色。我会考虑使用HSL(色相,饱和度和亮度)色彩空间。现在您需要60个不同的值。因此,您可以对所有像素使用完全的饱和度和亮度,然后将可用的360度色相分布为6种颜色,以显示60种颜色。或者,您可以使用100%亮度和50%亮度加上100%饱和度和50%饱和度为您提供4倍的亮度/饱和度组合,这意味着您可以将色相旋转24度以获得更大的分离度。
有关如何从Numpy数组制作图像,向图像添加调色板并将其制作为枕头图像并保存的示例,请参见here。
我基本上建议使用60个条目的调色板,并具有以下值:
Hue, Saturation, Lightness
0 50% 50%
0 50% 100%
0 100% 50%
0 100% 100%
23 50% 50%
23 50% 100%
23 100% 50%
23 100% 100%
47 50% 50%
47 50% 100%
47 100% 50%
47 100% 100%
61 ...
答案 1 :(得分:2)
您不需要转换为RGB。只需将pcolor与适当的颜色图一起使用。
它可能像这样简单:
import matplotlib.pyplot as plt
import numpy
M = numpy.array([[1,2,3,4,5,6,7,8,9,10], [11,12,13,14,15,16,17,18,19,20]])
plt.pcolor( M , cmap = 'hsv' )
plt.show()
由Mark Setchell添加: