PIL.Image变numpy
时间: 2023-10-22 10:03:37 浏览: 67
可以使用`numpy.array()`方法将PIL.Image对象转换为NumPy数组。例如:
```python
from PIL import Image
import numpy as np
# 打开图像文件
image = Image.open('image.jpg')
# 将图像转换为NumPy数组
image_array = np.array(image)
# 查看数组形状
print(image_array.shape)
```
这将打印数组的形状,它应该是一个三维数组,其中第一个维度是图像的高度,第二个维度是图像的宽度,第三个维度是通道数(例如RGB图像的通道数为3)。
相关问题
PIL.Image转为numpy
可以使用numpy库来将PIL.Image转为numpy数组,具体代码如下:
```python
import numpy as np
from PIL import Image
# 打开图片
image = Image.open("image.jpg")
# 将图片转为numpy数组
array = np.array(image)
# 显示数组的形状
print(array.shape)
```
其中,`image.jpg`是你要读取的图片文件名,可以替换成你自己的图片文件名。`np.array()`方法可以将PIL.Image对象转为numpy数组。你可以通过`array.shape`查看数组的形状,从而获取图片的宽度、高度和通道数等信息。
class Image2Array(object): """ transfer PIL.Image to Numpy array and transpose dimensions from 'dhwc' to 'dchw'. Args: transpose: whether to transpose or not, default True, False for slowfast. """ def __init__(self, transpose=True): self.transpose = transpose def __call__(self, results): """ Performs Image to NumpyArray operations. Args: imgs: List where each item is a PIL.Image. For example, [PIL.Image0, PIL.Image1, PIL.Image2, ...] return: np_imgs: Numpy array. """ imgs = results['imgs'] np_imgs = (np.stack(imgs)).astype('float32') if self.transpose: np_imgs = np_imgs.transpose(0, 3, 1, 2) # tchw results['imgs'] = np_imgs return results
这是一个Python类,用于将PIL.Image对象转换为Numpy数组,并且可以选择是否转置数组的维度。它可以作为数据处理管道中的一个步骤,例如在图像分类或物体检测任务中。下面是一个简单的示例代码,演示如何将图像文件转换为Numpy数组,并应用Image2Array类:
```python
from PIL import Image
import numpy as np
class Image2Array(object):
"""
transfer PIL.Image to Numpy array and transpose dimensions from 'dhwc' to 'dchw'.
Args:
transpose: whether to transpose or not, default True, False for slowfast.
"""
def __init__(self, transpose=True):
self.transpose = transpose
def __call__(self, results):
"""
Performs Image to NumpyArray operations.
Args:
imgs: List where each item is a PIL.Image.
For example, [PIL.Image0, PIL.Image1, PIL.Image2, ...]
return:
np_imgs: Numpy array.
"""
imgs = results['imgs']
np_imgs = (np.stack(imgs)).astype('float32')
if self.transpose:
np_imgs = np_imgs.transpose(0, 3, 1, 2) # tchw
results['imgs'] = np_imgs
return results
# 读取图像文件
img = Image.open("image.jpg")
# 应用Image2Array类将图像转换为Numpy数组
image2array = Image2Array()
np_img = image2array({'imgs': [img]})['imgs'][0]
# 输出数组形状
print(np_img.shape)
```
在上面的代码中,我们首先使用PIL库打开一个图像文件,然后使用Image2Array类将其转换为Numpy数组。最后,我们输出数组的形状。注意,我们将图像文件转换为单个PIL.Image对象,并将其放入一个列表中,因为Image2Array类预期的输入是一个图像列表。
阅读全文