使用plt显示图片的时候uint8和int8图片都会被归一化吗
时间: 2023-08-15 19:58:34 浏览: 66
在使用 `plt.imshow()` 函数显示图片时,默认情况下,无论是 `uint8` 类型还是 `int8` 类型的图片都会被归一化。
归一化是将像素值映射到 0 到 1 的范围内,以便于显示。对于 `uint8` 图片,像素值的范围是 0 到 255,而对于 `int8` 图片,范围是 -128 到 127。在归一化过程中,像素值会被除以 255(对于 `uint8`)或 127(对于 `int8`),使得它们的范围变为 0 到 1。
但是,你可以通过设置 `vmin` 和 `vmax` 参数来自定义归一化范围。例如,你可以将 `vmin=0` 和 `vmax=255` 设置为保持 `uint8` 图片的原始范围。类似地,对于 `int8` 图片,你可以将 `vmin=-128` 和 `vmax=127` 设置为保持原始范围。
以下是一个示例代码,显示 `uint8` 和 `int8` 图片时分别使用了默认的归一化和自定义的归一化范围:
```python
import matplotlib.pyplot as plt
import numpy as np
# uint8 图片
uint8_image = np.random.randint(0, 256, size=(100, 100), dtype=np.uint8)
plt.subplot(121)
plt.imshow(uint8_image)
# int8 图片
int8_image = np.random.randint(-128, 128, size=(100, 100), dtype=np.int8)
plt.subplot(122)
plt.imshow(int8_image, vmin=-128, vmax=127)
plt.show()
```
通过设置 `vmin` 和 `vmax` 参数,你可以根据需要自定义归一化范围。