使用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
相关产品推荐
相关产品推荐

