Matplotlib imshow搭配ListedColormap绘制分割掩码时边界颜色异常
问题原因
matplotlib的imshow函数默认启用了像素插值逻辑,会对相邻不同取值的像素做平滑过渡计算,生成原本不存在的中间值,这些中间值会被你设置的ListedColormap映射到中间档位的颜色,也就是你看到的边界异常色,该问题和BoundaryNorm的边界设置无关,是插值环节产生的伪数据导致的。
解决方案
- 直接在调用
imshow时显式指定插值方式为最近邻插值,关闭平滑逻辑即可,修改你的imshow调用代码为:
ax.imshow(np.squeeze(_ov,axis=0), cmap=cmap, norm=norm, interpolation='nearest')
- 如果需要全局生效避免每次调用都重复设置,可以在代码开头添加全局配置:
import matplotlib.pyplot as plt plt.rcParams['image.interpolation'] = 'nearest'
修改后像素会严格按照原始取值映射颜色,不会出现插值生成的中间色,边界杂色问题就会消失。
内容的提问来源于stack exchange,提问作者nicetrybro
相关产品推荐
相关产品推荐

