使用Numpy数组创建白色图像失败,显示为黑色求助
解决Matplotlib显示全白画布却变成黑色的问题
嘿,我来帮你搞定这个小问题!你遇到的情况其实是Matplotlib的imshow默认行为搞的鬼:当你的数组所有值都是255时,imshow会自动根据数组的最小值和最大值调整颜色映射范围。因为此时数组的min和max都是255,颜色映射会被压缩到单个点,结果就显示成了黑色(对应灰度cmap的最低端)。
给你两个简单的解决办法:
方法1:手动指定颜色范围
在调用imshow的时候,明确设置vmin=0和vmax=255,强制Matplotlib使用标准的0-255灰度区间:
import numpy as np import matplotlib.pyplot as plt canvas = np.zeros((300, 300), np.uint8) canvas_1 = 255 - canvas plt.imshow(canvas_1, cmap='gray', interpolation='none', vmin=0, vmax=255) plt.xticks([]), plt.yticks([]) # 隐藏坐标轴刻度 plt.show()
方法2:直接创建全白数组
换个更直观的方式生成白色画布,用np.ones创建数组后乘以255,这样就不会触发自动缩放的问题:
import numpy as np import matplotlib.pyplot as plt canvas_1 = np.ones((300, 300), np.uint8) * 255 plt.imshow(canvas_1, cmap='gray', interpolation='none') plt.xticks([]), plt.yticks([]) plt.show()
随便选一种都能正常显示白色画布啦!
内容的提问来源于stack exchange,提问作者Sourjeet Gupta
相关产品推荐
相关产品推荐

