matplotlib 在float64中显示RGB图像[关闭]

1yjd4xko  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(135)

已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question
我有一个数据类型为uint8的图像。我想将其转换为数据类型float64并显示它。我希望看到的图像与数据类型为uint8的图像一样。但结果是这样的:

我的原始图像是这样的:

为什么会这样?我该怎么解决?

2fjabf4q

2fjabf4q1#

即使您可以使用浮点数来处理RGB图像,matplotlib也只接受3种输入格式:
类X阵列或PIL图像
图像数据。支持的阵列形状为:

  • (M,N):一个标量数据的图像。使用归一化和色彩Map将值Map到颜色。参见参数norm,cmap,vmin,vmax。
  • (M,N,3):具有RGB值(0-1 float或0-255 int)的图像。
  • (M,N,4):具有RGBA值(0-1浮点或0-255 int)的图像,即包括透明度。

前两个维度(M,N)定义图像的行和列。

超出范围的RGB(A)值被裁剪。

重要的关键是:

  • 0-1 float或0-255 int
  • 超出范围的RGB(A)值将被剪裁。

因此,如果你想显示一个带有浮点数的图像,你必须将图像数组除以255。

img_int = np.random.randint(0, 256, (32, 32, 3))
img_float = img_int / 255

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 4))
ax1.imshow(img_int)
ax2.imshow(img_float)
plt.show()

输出:

相关问题