Matplotlib を使用して画像をグレースケールとして表示する
matplotlib.pyplot.imshow() を使用して画像を操作する場合、画像をグレースケールに変換することが不可欠です。要素を色でオーバーレイします。この変換を容易にするために、PIL の Image.open().convert("L") 関数が一般的に使用されます。
問題
画像を変換するために PIL を使用しているにもかかわらず、グレースケールで matplotlib.pyplot.imshow() で表示すると、画像は真のグレースケールではなくカラーマップで表示されます。
解決策
この問題を解決するには、 matplotlib.pyplot.imshow() を呼び出すときにカラーマップ引数を指定することが重要です。デフォルトでは、matplotlib は画像に色を導入する可能性のあるカラーマップを選択します。グレースケール表現を保証するには、cmap='gray' を設定し、vmin=0 および vmax=255 を使用してグレー値の範囲を明示的に定義します。
サンプル コード
次のコードスニペットは、画像をロードし、グレースケールに変換して表示する方法を示しています。
<code class="python">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()</code>
または、逆グレースケール表現を希望する場合は、cmap 引数を 'gray_r' に変更します。
以上がMatplotlib を使用すると、グレースケール画像がカラーマップとともに表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。