NumPy 将数组转换为图像

NumPy 将数组转换为图像

使用NumPy库创建的数组可以使用Python编程语言中的PIL或opencv库将其转换为图像。让我们逐个了解每个库。

Python图像库

PIL是Python Image Library的缩写,是Python中的图像处理库。它是一个轻量级且易于使用的库,用于执行图像处理任务,如读取、写入、调整大小和裁剪图像。

该库执行所有基本的图像处理任务,但不具有计算机视觉应用所需的任何高级功能。我们在PIL中有一个名为fromarray()的函数,用于将数组转换为图像。

语法

以下是使用PIL库的fromarray()函数将数组转换为图像的句法。

from PIL import Image
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()

输出

当我们运行上面的代码时,将会产生以下输出:

NumPy 将数组转换为图像

示例

让我们看一个使用Image()函数将数组转换为图像的另一个示例。

import numpy as np
from PIL import Image
arr = np.random.random_sample((54,20))-300
print("The created array:",arr)
arr_image = Image.fromarray(arr)
print(arr_image)
arr_image.show()

输出

以下是PIL库中Image()函数的输出结果。

NumPy 将数组转换为图像

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(Open Source Computer Vision Library)是一个更先进的库,用于处理计算机视觉应用。它具有诸如物体检测,跟踪,面部识别等功能。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()

输出

运行以上代码后,imshow()函数在OpenCV库中的输出如下:

NumPy 将数组转换为图像

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程