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

使用plt.imshow()显示浅灰色图像却呈现黑色的技术问题

解决plt.imshow显示浅灰色图像为黑色的问题

你遇到的问题是因为Matplotlib的imshow对float类型数组的默认归一化逻辑导致的:

  • 当数组所有元素值相同时,自动归一化会因除数为0,将所有像素解析为nan,最终显示为黑色;
  • 即使数组有不同值,float类型数组的默认颜色映射范围是0-1,200会被判定为超出范围,同样会显示异常。

以下两种方法可以解决这个问题:

方法一:显式设置颜色映射范围

直接指定灰度值的范围为0-255,让imshow正确识别你的数值对应的灰度:

import matplotlib.pyplot as plt
import numpy as np
test_image = np.zeros((3871, 2484))
test_image.fill(200)
plt.imshow(test_image, cmap="gray", vmin=0, vmax=255)
plt.show()

方法二:使用uint8类型数组

8位灰度图的标准范围是0-255,将数组转为uint8类型后,imshow会自动适配这个范围:

import matplotlib.pyplot as plt
import numpy as np
test_image = np.full((3871, 2484), 200, dtype=np.uint8)
plt.imshow(test_image, cmap="gray")
plt.show()

内容的提问来源于stack exchange,提问作者roydbt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:17:32