用于将 Numpy 数组转换为 PIL 图像对象
时间: 2023-05-21 17:01:31 浏览: 598
可以使用以下代码将 Numpy 数组转换为 PIL 图像对象:
```python
from PIL import Image
import numpy as np
# 创建一个 Numpy 数组
arr = np.zeros([100, 100, 3], dtype=np.uint8)
# 将 Numpy 数组转换为 PIL 图像对象
img = Image.fromarray(arr)
```
这里我们使用了 PIL 库中的 `Image.fromarray()` 方法将 Numpy 数组转换为 PIL 图像对象。
相关问题
将numpy数组转换为PIL图像对象后,图像的色调不是正常色调
将numpy数组转换为PIL图像对象时,需要注意两点:
1. numpy数组的数据类型应该是uint8,否则将会导致色彩失真。
2. PIL库默认使用的色彩模式是RGB,如果numpy数组的形状不是3维的(例如灰度图像的形状为2维),需要先将其转换为3维。
以下是将numpy数组转换为PIL图像对象的示例代码:
```python
import numpy as np
from PIL import Image
# 创建一个形状为(100, 100)的灰度图像
gray_image = np.random.randint(low=0, high=256, size=(100, 100), dtype=np.uint8)
# 将灰度图像转换为RGB图像
rgb_image = np.stack([gray_image] * 3, axis=-1)
# 将numpy数组转换为PIL图像对象
pil_image = Image.fromarray(rgb_image)
```
如果你遇到了图像色调不正常的问题,可以检查一下以上两点是否有误。
将numpy数组转换为RGB图像对象
可以使用Python中的PIL库(Pillow库)来将numpy数组转换为RGB图像对象。以下是示例代码:
```python
import numpy as np
from PIL import Image
# 创建一个3x3的numpy数组,表示一张RGB图像
arr = np.array([
[[255, 0, 0], [0, 255, 0], [0, 0, 255]],
[[255, 255, 0], [255, 0, 255], [0, 255, 255]],
[[128, 128, 128], [0, 0, 0], [255, 255, 255]]
], dtype=np.uint8)
# 将numpy数组转换为PIL图像对象
img = Image.fromarray(arr, mode='RGB')
# 显示图像
img.show()
```
首先,我们创建一个3x3的numpy数组,表示一张RGB图像。然后,使用`Image.fromarray()`函数将numpy数组转换为PIL图像对象。注意,我们需要指定`mode`参数为'RGB',以告知PIL库这是一张RGB图像。
最后,我们可以使用`img.show()`函数显示图像。
阅读全文