当创建一个numpy
数组与dtype=float
,使用的呈现方法matplotlib.pyplot.imshow
似乎取决于值,因此 0.50 的值不仅仅是 50% 灰度。
使用此代码模板:
import numpy as np
import matplotlib.pyplot as plt
img = np.empty([2, 2])
img[:] = {image}
plt.imshow(img, cmap='gray')
plt.show()
然后是图像[[1.0, 1.0], [0.0, 0.5]]
显示为:
但图像[[1.0, 1.0], [1.0, 0.5]]
,其中仅 0.0 更改为 1.0,显示为:
我原以为 0.5(右下角)在这两种情况下都会显示为 50% 灰色,但由于某种原因,表示方法发生了变化,因此 0.5 的解释有所不同,具体取决于数组中其他元素的值。
那么,如何将 dtype=float 的 numpy NxM 数组显示为纯灰度图像?
您必须修复色标的限制:
plt.imshow(img, cmap='gray',clim=(0,1))
为了更好地了解正在发生的情况,您可以添加一个颜色条,以可视化颜色和数值之间的转换;例如使用以下代码:
fig,ax = plt.subplots()
cax = plt.imshow(img, cmap='gray')
cbar = fig.colorbar(cax)
plt.show()
对两个示例执行此操作立即可以清楚地看出 matplotlib.pyplot 更新了数据的色标范围。因此,两种情况下颜色和数值之间的转换是不同的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)