将 NumPy 数组转换为图像
使用 Numpy 库创建的数组可以使用 Python 编程语言中的 PIL 或 opencv 库转换为图像。让我们逐一了解每个库。
Python 图像库
PIL 缩写为 Python 图像库,它是 Python 中的图像处理库。它是一个轻量级且易于使用的库,可执行图像处理任务,如读取、写入、调整大小和裁剪图像。
此库执行所有基本图像处理任务,但没有计算机视觉应用程序所需的任何高级功能。 PIL 中有一个名为 fromarray() 的函数,用于将数组转换为图像。
语法
以下是使用 PIL 库 fromarray() 函数将数组转换为图像的语法。
from PIL import Image Image.fromarray(array)
其中,
PIL 是库。
Image 是模块。
fromarray 是用于将数组转换为图像的函数。
array 是输入数组。
示例
在下面的示例中,我们将数组作为输入参数传递给 PIL 库的 Image() 函数,然后该数组将转换为图像。
import numpy as np from PIL import Image img_array = np.random.randint(0, 256, size=(400, 400, 3), dtype=np.uint8) img = Image.fromarray(img_array) img.show()
输出
运行上述代码时,将创建以下输出 -
示例
让我们看另一个使用 Image() 函数将数组转换为图像的示例。
import numpy as np from PIL import Image arr = np.random.random_sample((54,20))-300 print("创建的数组:",arr) arr_image = Image.fromarray(arr) print(arr_image) arr_image.show()
输出
以下是 PIL 库的 Image() 函数的输出。
The created array: [[-299.5919437 -299.74420221 -299.49075902 ... -299.89184373 -299.69001867 -299.16309632] [-299.19938896 -299.28820797 -299.61738678 ... -299.92440345 -299.13888282 -299.76989823] [-299.00815558 -299.20241227 -299.38977629 ... -299.24134658 -299.98742918 -299.52568095] ... [-299.56342592 -299.28958897 -299.49736771 ... -299.52379255 -299.96158965 -299.87328193] [-299.66344304 -299.06209353 -299.12469693 ... -299.77211586 -299.29320983 -299.11549178] [-299.20544152 -299.3039006 -299.44856478 ... -299.37400605 -299.51143367 -299.14221048]] <PIL.Image.Image image mode=F size=20x54 at 0x7F3BF0837220> Error: no "view" mailcap rules found for type "image/png" /usr/bin/xdg-open: 882: www-browser: Permission denied /usr/bin/xdg-open: 882: links2: Permission denied /usr/bin/xdg-open: 882: elinks: Permission denied /usr/bin/xdg-open: 882: links: Permission denied /usr/bin/xdg-open: 882: lynx: Permission denied /usr/bin/xdg-open: 882: w3m: Permission denied xdg-open: no method available for opening '/tmp/tmprade9ylv.PNG'
开源计算机视觉库
Opencv 是开源计算机视觉库的缩写,它是为与计算机视觉应用程序配合使用而开发的更高级的库。它具有以下功能:物体检测、跟踪、面部识别等。OpenCV 适用于执行图像和视频分析、增强现实、机器人技术和其他计算机视觉应用。
在 opencv 中,我们有一个名为 imshow() 的函数,用于将数组转换为图像。
语法
以下是使用 imshow() 将数组转换为图像的语法。
import cv2 cv2.imshow(image_name,array)
其中,
cv2 是库的名称。
imshow 是用于将数组转换为图像的函数。
array 是输入数组。
image_name 是转换后的图像。
示例
为了将数组转换为图像,我们必须将要转换的数组和文件名作为输入参数传递给 opencv 库的 imshow() 函数。
import cv2 import numpy as np img_array = np.random.randint(0, 256, size=(400, 400, 3), dtype=np.uint8) cv2.imshow('image', img_array) cv2.waitKey(0) cv2.destroyAllWindows()
输出
以下是运行上述代码时 opencv 库的 imshow() 函数的输出 -