📅  最后修改于: 2023-12-03 15:03:46.243000             🧑  作者: Mango
在Python中,我们经常需要将图像处理为数字数组以便更好地进行分析和处理。在这个过程中,PIL(Python Imaging Library)和NumPy是两个非常有用的库。PIL可以用于打开,操作和保存各种图像格式,NumPy则可以将图像转换为数字数组进行进一步的处理。
如果你还没有安装PIL和NumPy,可以使用以下命令在终端中安装:
pip install pillow
pip install numpy
使用PIL打开图像,并将其转换为NumPy数组的步骤如下所示:
from PIL import Image
import numpy as np
# 打开图像并将其转换为NumPy数组
img = Image.open('test.jpg')
img_np = np.array(img)
# 显示图像的尺寸和数据类型
print('图像尺寸:', img_np.shape)
print('数据类型:', img_np.dtype)
输出应该是:
图像尺寸: (512, 512, 3)
数据类型: uint8
在这里,我们使用Image.open()打开图像,然后调用np.array()将其转换为NumPy数组。您还可以使用np.asarray()获得类似的结果。返回的数组的形状是(width,height,channels)或(height,width,channels),取决于您的图像是如何排列的。
您可以使用matplotlib库将图像从NumPy数组中显示出来。
import matplotlib.pyplot as plt
plt.imshow(img_np)
plt.show()
这将打开一幅新图片,显示已经导入并转换为numpy数组的图像。如果你想保存图像,你可以使用以下相似的代码片段:
plt.imsave('new_image.jpg', img_np)
这将把NumPy数组保存为新图像。
这就是使用PIL将图像转换为NumPy数组的基础知识,您现在可以开始尝试并实现更高级的图像分析和处理。