You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:18:59