gpt4 book ai didi

python - 为什么将 numpy.array 数据类型从 int 更改为 float 会改变 numpy.imshow() 的输出

转载 作者:行者123 更新时间:2023-12-02 04:45:07 25 4
gpt4 key购买 nike

今天,我遇到了一件奇怪的事情,我无法解释也找不到答案。也许我有一些根本性的误解,而且我没有看到明显的误解,但我想我现在已经到了这样的地步:我会硬着头皮被叫出来,现在知道发生了什么。

我正在使用 PIL 加载一些图像数据并将其转换为 numpy 数组。这里没什么特别的。不过,我随后将数据类型从整数更改为浮点,以便我可以在后续步骤中标准化 RGB channel 。

我希望将数据类型从 int 更改为 float 不会以任何方式真正改变图像。然而...

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

im = Image.open("test.jpg")

数据类型更改之前:

plt.imshow(np.array(im))  

enter image description here

数据类型更改后:

plt.imshow(np.array(im).astype(float))    

enter image description here

这是人们所期望的吗?如果是这样...为什么?我缺少什么?

提前干杯并感谢!!

最佳答案

如果您检查文档,您会看到 imshow 期望:

  • (M, N): an image with scalar data. The values are mapped to colors using normalization and a colormap. See parameters norm, cmap, vmin, vmax.

  • (M, N, 3): an image with RGB values (0-1 float or 0-255 int).

因此,当数据类型为 float 时,它期望它们在 0-1 范围内,因此我们必须将其除以 255 才能得到预期结果,否则您将看到图像的负片

以下是使用 sklearn.datasets 中的示例图像的示例:

from sklearn.datasets import load_sample_images
dataset = load_sample_images()
first_img_data = dataset.images[0]
plt.imshow(first_img_data)

enter image description here

为了将值限制在 0-1 范围内,我们只需除以 255:

plt.imshow(first_img_data.astype(float)/255)

enter image description here

关于python - 为什么将 numpy.array 数据类型从 int 更改为 float 会改变 numpy.imshow() 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60885733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com