Python の OpenCV で画像を表示させたときに色が変なときの対処法

OpenCV

概要

Python で OpenCV を利用し、matplotlib で画像を表示させようとしたときに、色が想定と違う色になることがあります。

具体的には以下のような状況です。

original_image = cv2.imread("画像のパス")
fig = plt.figure()
plt.imshow(original_image)

この原因は OpenCV が画像を扱う際に色の並びが RGB ではなく GBR であるからです。

一方で matplotlib は画像を表示する際、色の並びが RGB である前提で表示します。
このため 緑 → 赤、青 → 緑、赤 → 青 という様に色が入れ替わって表示されてしまいます。

従って、色を正しく表示させるための具体的な対処法は以下です。

  • 画像を matplotlib で表示させる前に GBR の並びを RGB に変換する

画像を GBR から RGB に変換する方法

OpenCV には色空間を変換するための関数 cv2.cvtColor() が用意されていて、これを使うことでGBRからRGBに変換することができます。

具体的なコードは以下です。

original_image = cv2.imread("画像のパス")
converted_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB) #これでBGRからRGBに変換する
fig = plt.figure()
plt.imshow(converted_image)

コメント

タイトルとURLをコピーしました