MatplotlibでOpenCVのグレースケール画像を表示する方法
Matplotlibを使って、OpenCVで読み込んだ画像をグレースケールで表示するには、以下の手順に従います。
- 図(figure)のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- imread関数で、指定したファイルから画像を読み込みます。
- cvtColor関数で、入力画像をある色空間から別の色空間へ変換します。ここではカラー画像をグレースケールへ変換しています。
- imshow関数で、データを2次元のラスター画像として表示します。白黒で表示するにはcmap="gray"の指定が必要です。
- show()メソッドを呼び出して、図を画面に表示します。
コード例
import cv2
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
img = cv2.imread("baseball.png")
image = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
plt.imshow(image, cmap="gray")
plt.show()
実行結果

ポイント解説
グレースケール画像を正しく表示するためには、次の2つのポイントが重要です。
- 色空間の変換:
cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)によって、カラー画像(3チャンネル)をグレースケール(1チャンネル)画像に変換しています。これにより、各ピクセルが輝度値のみを持つデータになります。 - カラーマップの指定: Matplotlibはデフォルトでは「viridis」などの疑似カラーで画像を表示します。そのため、
plt.imshow(image, cmap="gray")のようにcmap="gray"を明示的に指定しないと、白黒画像がカラフルに表示されてしまいます。
この2点を押さえておけば、OpenCVで処理した画像をMatplotlib上で意図どおりのグレースケール表示にできます。画像処理の前処理やエッジ検出などの結果確認にも役立つ基本的なテクニックなので、ぜひ覚えておきましょう。
-
Matplotlibでnumpyのdatetime64型の時系列データをプロットする方法
PythonのMatplotlibを使って時系列データをグラフ化する方法を解説します。日付や時刻のデータ(datetime64型など)は、そのままplot()メソッドに渡すだけで自動的に軸に反映されるため、非常に簡単です。基本的な手順numpyを使ってx(日時)とy(数値)のデータを作成する。plot()メソッドで作成したxとyをプロットする。show()メソッドで図を表示する。サンプルコードimport matplotlib.pyplot as plt import datetime import numpy as np plt.rcParams[figure.figsize] = [7.
-
Matplotlibのグラフをフルスクリーンで表示する方法
Matplotlibで作成したグラフをフルスクリーン(全画面)で表示したい場合、full_screen_toggle()メソッドを使用すると簡単に実現できます。このメソッドは、現在開いているフィギュアウィンドウを全画面モードに切り替える機能を持ちます。 手順 figure()メソッドを使って、新しいフィギュアを作成するか、既存のフィギュアをアクティブにします。 2つのリストを渡してplot()メソッドを呼び出し、折れ線グラフを描画します。 get_current_fig_manager()メソッドで、現在のフィギュアのマネージャー(figure manager)を取得します。 取得したマネー