Numpy matshow 生成空白图像,尽管 dtype 是 float
Numpy matshow produces blank image despite dtype is float
我的脚本采用 3 个相同大小的 numpy 数组,使用 dstack 创建 ndarray 并假设将它们显示为 rgb image.However,RGB 图像的最后一部分似乎可以工作,但我无法显示图像我得到的只是空白图像。
这就是我从 3 个数组创建图像的方式:
rgb_result=np.dstack((result[3,:,:],result[2,:,:],result[1,:,:]))
plt.figure(figsize=(10,6))
plt.matshow(rgb_result*5,fignum=1,aspect='auto')
plt.title(d)
plt.show()
结果是空白图像:
每当我绘制构成“rgb_result”的波段之一时,它就会起作用(这三个图像与此非常相似):
我也检查了每个波段和ndarray的类型,它是float64。
我的问题是如何使 matshow 工作并以 RGB 格式显示图像。
matshow
uses imshow
在引擎盖下,它期望数据在浮点数的 0-1 或整数的 0-255 之间:
(M, N, 3): an image with RGB values (0-1 float or 0-255 int).
由于rgb_result
包含浮点数,应归一化为0-1(减去最小值并除以最大值):
plt.matshow((rgb_result-rgb_result.min())/rgb_result.max(), fignum=1, aspect='auto')
或者如果rgb_result
保证为正数,除以最大值即可:
plt.matshow(rgb_result/rgb_result.max(), fignum=1, aspect='auto')
使用一些假数据,这是 post 前标准化输出:
我的脚本采用 3 个相同大小的 numpy 数组,使用 dstack 创建 ndarray 并假设将它们显示为 rgb image.However,RGB 图像的最后一部分似乎可以工作,但我无法显示图像我得到的只是空白图像。
这就是我从 3 个数组创建图像的方式:
rgb_result=np.dstack((result[3,:,:],result[2,:,:],result[1,:,:]))
plt.figure(figsize=(10,6))
plt.matshow(rgb_result*5,fignum=1,aspect='auto')
plt.title(d)
plt.show()
结果是空白图像:
每当我绘制构成“rgb_result”的波段之一时,它就会起作用(这三个图像与此非常相似):
我也检查了每个波段和ndarray的类型,它是float64。
我的问题是如何使 matshow 工作并以 RGB 格式显示图像。
matshow
uses imshow
在引擎盖下,它期望数据在浮点数的 0-1 或整数的 0-255 之间:
(M, N, 3): an image with RGB values (0-1 float or 0-255 int).
由于rgb_result
包含浮点数,应归一化为0-1(减去最小值并除以最大值):
plt.matshow((rgb_result-rgb_result.min())/rgb_result.max(), fignum=1, aspect='auto')
或者如果rgb_result
保证为正数,除以最大值即可:
plt.matshow(rgb_result/rgb_result.max(), fignum=1, aspect='auto')
使用一些假数据,这是 post 前标准化输出: