概要
Python で OpenCV を利用し、matplotlib で画像を表示させようとしたときに、色が想定と違う色になることがあります。
具体的には以下のような状況です。
original_image = cv2.imread("画像のパス")
fig = plt.figure()
plt.imshow(original_image)
この原因は OpenCV が画像を扱う際に色の並びが RGB ではなく BGR であるからです。
一方で matplotlib は画像を表示する際、色の並びが RGB である前提で表示します。
このため 緑 → 赤、青 → 緑、赤 → 青 という様に色が入れ替わって表示されてしまいます。
従って、色を正しく表示させるための具体的な対処法は以下です。
画像を GBR から RGB に変換する方法
OpenCV には色空間を変換するための関数 cv2.cvtColor() が用意されていて、これを使うことでBGRからRGBに変換することができます。
具体的なコードは以下です。
original_image = cv2.imread("画像のパス")
converted_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB) #これでBGRからRGBに変換する
fig = plt.figure()
plt.imshow(converted_image)
コメント