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()

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

色変換

公開日

広告