OpenCV は、読み込み時にカラー画像に間違った色を表示します 質問する

OpenCV は、読み込み時にカラー画像に間違った色を表示します 質問する

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

元の画像は次のとおりです。ここに画像の説明を入力してください

そして、プロットされた画像は次のとおりです。ここに画像の説明を入力してください

ベストアンサー1

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

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

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

そしてそれをあなたのプロットに使用します。

おすすめ記事