1. ホーム
  2. python

[解決済み] matplotlib を使って画像をグレースケールで表示する

2022-02-02 20:48:27

質問

を使ってグレースケールの画像を表示しようとしています。 matplotlib.pyplot.imshow() . 私の問題は、グレースケール画像がカラーマップとして表示されることです。 私は画像の上にカラーで描画したいので、グレースケールが必要なのです。

画像を読み込んで、グレースケールに変換するのは PILのImage.open().convert("L")

image = Image.open(file).convert("L")

次に、画像を行列に変換して、以下の方法で簡単に画像処理ができるようにします。

matrix = scipy.misc.fromimage(image, 0)

しかし

figure()  
matplotlib.pyplot.imshow(matrix)  
show()

は、カラーマップを使用して画像を表示します(つまり、グレースケールではありません)。

何が間違っているのでしょうか?

どうすればいいですか?

次のコードは、ファイルから画像を読み込みます。 image.png で、グレースケールで表示します。

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

fname = 'image.png'
image = Image.open(fname).convert("L")
arr = np.asarray(image)
plt.imshow(arr, cmap='gray', vmin=0, vmax=255)
plt.show()

逆グレイスケールを表示したい場合は、cmapを切り替えて cmap='gray_r' .