Matplotlib imread() メソッド

imread() メソッドは、Matplotlib ライブラリ内の関数で、画像ファイルから画像データを読み取るために使用されます。

imread() メソッドは numpy.ndarray オブジェクトを返します。その形状は(nrows, ncols, nchannels)、読み取った画像の行数、列数、チャンネル数を表します:

  • 画像がグレースケール画像の場合は、nchannels は 1 です。
  • カラー画像の場合は、nchannels は 3 または 4 で、それぞれ赤、緑、青の3つのカラーチャンネルと1つのアルファチャンネルを表します。

imread() メソッドの構文は次のとおりです:

matplotlib.pyplot.imread(fname, format=None)

パラメータの説明:

  • fname:読み取る画像ファイルのファイル名またはファイルパスを指定します。相対パスまたは絶対パスを指定できます。
  • format :画像ファイルの形式を指定します。指定しない場合は、デフォルトでファイルの拡張子に基づいて形式が自動的に認識されます。

次の例は、imread 関数を使用して画像ファイルから画像データを読み取り、それを表示する方法を示しています:

例

import matplotlib.pyplot as plt

# 画像ファイルを読み込む、ダウンロード先:/static.jyshare.com/images/demo/map.jpeg
img = plt.imread('map.jpeg')

# 画像を表示
plt.imshow(img)
plt.show()

上記の例では、まず imread() メソッドを使用して map.jpeg という名前の画像ファイルから画像データを読み取り、img 変数に格納しました。

次に、imshow() メソッドを使用してこの画像を表示しました。

注意:画像を表示する際にカラーマップを指定していません。これは、imread() メソッドが画像データを正しいカラーマップに従って RGB 形式に変換済みであるため、デフォルトのカラーマップを使用して画像を直接表示できます。

表示結果は次のとおりです:

numpy 配列を変更することで画像を変更できます。

たとえば、配列に数値を掛けると0≤≤1、画像が暗くなります:

例

import matplotlib.pyplot as plt

# 画像ファイルを読み込む、ダウンロード先:/static.jyshare.com/images/mix/tiger.jpeg
img_array = plt.imread('tiger.jpeg')
tiger = img_array/255
#print(tiger)

# 画像を表示
plt.figure(figsize=(10,6))

for i in range(1,5):
    plt.subplot(2,2,i)
    x = 1 - 0.2*(i-1)
    plt.axis('off') #hide coordinate axes
    plt.title('x={:.1f}'.format(x))
    plt.imshow(tiger*x)

plt.show()

表示結果は次のとおりです:

次の例は、画像の切り抜き(クロップ)を行うものです:

例

import matplotlib.pyplot as plt

# 画像ファイルを読み込む、ダウンロード先:/static.jyshare.com/images/mix/tiger.jpeg
img_array = plt.imread('tiger.jpeg')
tiger = img_array/255
#print(tiger)

# 画像を表示
plt.figure(figsize=(6,6))
plt.imshow(tiger[:300,100:400,:])
plt.axis('off')
plt.show()

表示結果は次のとおりです:

RGB カラーの緑と青のチャンネルに対応する配列要素を 0 に設定すると、赤色の画像が得られます:

例

import matplotlib.pyplot as plt

# 画像ファイルを読み込む、ダウンロード先:/static.jyshare.com/images/mix/tiger.jpeg
img_array = plt.imread('tiger.jpeg')
tiger = img_array/255
#print(tiger)

# 画像を表示
red_tiger = tiger.copy()

red_tiger[:, :,[1,2]] = 0

plt.figure(figsize=(10,10))
plt.imshow(red_tiger)
plt.axis('off')
plt.show()

表示結果は次のとおりです:

その他の拡張