PythonでOpenCVの画像データをMatplotlibで表示する

PythonのOpenCV(cv2)モジュールの画像データを、Matplotlibのpyplotで表示してみます。

OpenCV形式のデータをMatplotlibで表示できるように変換する手順

PythonのOpenCV(cv2)は画像データをndarrayとして扱います。Matplotlibもndarrayを画像として表示する機能があります。

ということは、pyplotでさくっと表示できるんじゃね。

ということで試してみます。

プロ生ちゃん の画像をcv2で読み込んで、pyplotで表示します。

元画像はこちらです。

元画像

こんなコードにしてみました。

import cv2
from matplotlib import pyplot as plt

im = cv2.imread('original.png', cv2.IMREAD_COLOR)

plt.imshow(im)
plt.show()

こんな感じに

そのまま

あれ、調子悪い?

ndarrayの中のカラー情報の並びが異なるためにこうなります。OpenCV(cv2)はBGRで、MatplotlibはRGBなんですね。だから、赤っぽい色が青っぽく表示されます。

cvtColorを使ってBGRからRGBに変換できます。

dst = cv2.cvtColor(src, code)
変数 内容
src ndarray 変換元の画像データ。
code   変換コード。COLOR_BGR2RGB。
dst ndarray 変換後の画像データ。

ではcvtColorを追加してみましょう。

import cv2
from matplotlib import pyplot as plt

im = cv2.imread('original.png', cv2.IMREAD_COLOR)

im_rgb = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)

plt.imshow(im_rgb)
plt.show()

はい、正しく表示されました。

色変換

広告

Pythonで画像処理カテゴリの投稿