將NumPy陣列轉換為影像


使用Numpy庫建立的陣列可以使用Python程式語言中的PILopencv庫轉換為影像。讓我們逐一瞭解每個庫。

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("The created array:",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()函式的輸出如下:

更新於:2023年8月9日

8K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.