Matplotlib でのグレースケール イメージの表示の問題を解決する
Matplotlib の imshow() を使用してグレースケール イメージを表示しようとすると、画像がカラーマップとして表示される状況。画像の上にカラーで描画することが目的の場合、これはイライラすることがあります。
解決策
imshow() 関数がカラーマップを割り当てるため、不一致が発生します。デフォルトでは画像に追加されます。これを修正するには、cmap 引数を明示的に指定し、グレースケールまたは逆グレースケールを表示するためにそれぞれ 'gray' または 'gray_r' に設定します。
<code class="python">import numpy as np import matplotlib.pyplot as plt from PIL import Image # Open and convert the image to grayscale fname = 'image.png' image = Image.open(fname).convert("L") # Convert the image to a matrix arr = np.asarray(image) # Display the grayscale image plt.imshow(arr, cmap='gray', vmin=0, vmax=255) # Use 'gray_r' for inverse grayscale plt.show()</code>
この変更されたコードが示すように、カラーマップを指定すると、画像はグレースケールとして正しくレンダリングされます。これで、画像の上にカラーで描画するという目的のタスクを進めることができます。
以上がMatplotlib の imshow() を使用すると、グレースケール画像がカラーで表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。