Matplotlib中imshow()的cmap='binary'生成反转二值图的原因探究
为什么matplotlib中
cmap="binary"会反转二值图像? 这个问题其实是matplotlib内置颜色映射(colormap)的设计逻辑导致的,我来给你拆解清楚:
首先得明确两个颜色映射的核心规则:
cmap="gray":遵循我们常规的二值图像认知,映射规则是数值越小颜色越黑,数值越大颜色越白——对应你示例里的0(黑边)和1(白方块),显示效果完全符合预期。cmap="binary":它的映射逻辑正好相反,是数值越小颜色越白,数值越大颜色越黑。所以你的square数组里,原本是0的边缘会变成白色,原本是1的中间方块会变成黑色,视觉上就呈现出图像反转的效果。
另外补充个小知识点:matplotlib里很多颜色映射都有对应的反转版本,命名通常是原colormap名加_r后缀(比如gray_r就是gray的反转),而binary本身就是官方预设的、专门用来实现反转灰度显示的映射,和gray_r的效果是完全一致的。
用你的示例代码验证的话,执行plt.imshow(square, cmap="binary")和plt.imshow(square, cmap="gray_r")会得到完全一样的反转图像。
内容的提问来源于stack exchange,提问作者sci9
相关产品推荐
相关产品推荐

