Python で NumPy の配列を画像として保存する

Manav Narula 2023年1月30日
  1. Image.fromarray() 関数を使用して、NumPy 配列を画像として保存する
  2. imageio.imwrite() 関数を使用して、NumPy 配列を画像として保存する
  3. matplotlib.pyplot.imsave() 関数を使用して、NumPy 配列を画像として保存する
  4. cv2.imwrite() 関数を使用して、NumPy 配列を画像として保存する
Python で NumPy の配列を画像として保存する

Python では、numpy モジュールを使用して配列を操作します。Python には、画像の読み取りと保存を可能にする多くのモジュールがあります。

画像は、それぞれのカラーコードで特定の位置に保存されたさまざまなピクセルの配列と考えることができます。そのため、配列を変換して画像として保存する必要がある場合があります。

このチュートリアルでは、numpy 配列を画像として保存する方法について説明します。

Image.fromarray() 関数を使用して、NumPy 配列を画像として保存する

fromarray() 関数は、配列をエクスポートするオブジェクトから画像メモリを作成するために使用されます。次に、必要なパスとファイル名を指定することで、このイメージメモリを目的の場所に保存できます。

例えば、

import numpy as np
from PIL import Image

array = np.arange(0, 737280, 1, np.uint8)
array = np.reshape(array, (1024, 720))

im = Image.fromarray(array)
im.save("filename.jpeg")

まず、RGB カラーコードを格納する配列を作成してから、それらをエクスポートします。ファイル名で画像の希望の形式を指定できます。これは、jpegpng、またはその他の一般的に使用される画像形式にすることができます。これは、以下で説明するすべての方法に共通です。

imageio.imwrite() 関数を使用して、NumPy 配列を画像として保存する

以前、scipy モジュールには imsave() 関数があり、numpy 配列を画像として保存していました。ただし、最近のバージョンでは非推奨になり、image.io()imwrite() 関数がこのタスクの実行を推奨されるようになり、その単純さで人気を博しました。

次のコードは、この関数の使用方法を示しています。

import imageio
import numpy as np

array = np.arange(0, 737280, 1, np.uint8)
array = np.reshape(array, (1024, 720))

imageio.imwrite("filename.jpeg", array)

matplotlib.pyplot.imsave() 関数を使用して、NumPy 配列を画像として保存する

matplotlib モジュールには、画像の操作に使用できるさまざまな関数があります。

imsave() 関数は、配列を画像ファイルとして保存できます。

例えば、

import matplotlib.pyplot as plt
import numpy as np

array = np.arange(0, 737280, 1, np.uint8)
array = np.reshape(array, (1024, 720))

plt.imsave("filename.jpeg", array)

cv2.imwrite() 関数を使用して、NumPy 配列を画像として保存する

OpenCV モジュールは、Python での画像処理によく使用されます。このモジュールの imwrite() 関数は、numpy 配列を画像ファイルとしてエクスポートできます。

例えば、

import cv2
import numpy as np

array = np.arange(0, 737280, 1, np.uint8)
array = np.reshape(array, (1024, 720))

cv2.imwrite("filename.jpeg", array)
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn