使用numpy
创建dtype=float
数组时,使用matplotlib.pyplot.imshow
的演示方法似乎取决于值,因此值0.50不仅仅是50%灰色。< / p>
使用此代码模板:
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数组作为普通灰度图像?
答案 0 :(得分:3)
您必须修正色阶的限制:
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会更新颜色范围到数据的范围。因此,对于两种情况,颜色和数值之间的转换是不同的。
答案 1 :(得分:0)
发现默认情况下imshow
会进行规范化,因此要避免这种情况,vmin
和vmax
必须提供给imshow
,然后是:
plt.imshow(img, cmap='gray', vmin=0, vmax=1)