1. ホーム
  2. python

[解決済み] OpenCVはロード時に色付き画像に間違った色を表示する

2022-10-13 07:45:52

質問

PythonのOpenCVでカラー画像を読み込み、プロットしています。しかし、私が取得した画像は、そのすべての色が混在しています。

以下はそのコードです。

import cv2
import numpy as np
from numpy import array, arange, uint8 
from matplotlib import pyplot as plt


img = cv2.imread('lena_caption.png', cv2.IMREAD_COLOR)
bw_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

images = []
images.append(img)
images.append(bw_img)

titles = ['Original Image','BW Image']

for i in xrange(len(images)):
    plt.subplot(1,2,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])

plt.show()

以下は元画像です。

そして、プロットした画像がこちらです。

どのように解決するのですか?

OpenCVは画像のデフォルトの色順としてBGRを使用し、matplotlibはRGBを使用します。OpenCvで読み込んだ画像をmatplotlibで表示すると、チャンネルは前後になります。

これを修正する最も簡単な方法は、グレイスケール画像を作成するときのように、OpenCVを使用して明示的にRGBに変換することです。

RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

そして、それをプロットで使用します。