我想创建一个Cityscapes_Palette_Map作为"颜色映射";用于我的语义分割输出。
从0到22的每个像素值的颜色定义如链接所示。
我看到了很多创建";连续的";cmap,但我需要的是";离散的";cmap将int像素值(类(映射到特定颜色。我想知道是否有人能为我找到合适的参考资料来解决我的问题。非常感谢。
欢迎使用SO.
Matplotlib仍然没有一种简单的方法来将整数映射到颜色。通常,最简单的方法是简单地在matplotlib之外应用映射,然后将颜色值传递给matplotllib。
import numpy as np
import matplotlib.pyplot as plt
n = 10
x = np.random.rand(n)
y = np.random.rand(n)
color_as_integer = np.random.randint(3, size=n)
colormap = {
0 : np.array([ 0, 0, 0, 255]), # unlabelled
1 : np.array([ 70, 70, 70, 255]), # building
2 : np.array([100, 40, 40, 255]), # fence
}
# matplotlib works with rbga values in the range 0-1
colormap = {k : v / 255. for k, v in colormap.items()}
color_as_rgb = np.array([colormap[ii] for ii in color_as_integer])
plt.scatter(x, y, s=100, c=color_as_rgb)
plt.show()
然后,您可以使用代理艺术家创建一个图例,如下所示。
另一种选择是使用ListedColormap和BoundaryNorm的组合将整数映射到颜色,如本答案所示。
在这种情况下,你也可以得到这里概述的颜色条(尽管在你的情况下,制作一个合适的图例可能更好(。