2016-09-04 10 views
17

私はPython OpenCVでカラー画像を読み込んでその画像をプロットしています。しかし、私が得たイメージは色がすべて混ざっています。ここで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() 

は、元の画像は、次のとおりです。 enter image description here

そしてここでは、プロットされた画像は、次のとおりです。 enter image description here

答えて

33

OpenCVのは、そのデフォルト色の注文としてBGRを使用していますmatplotlibはRGBを使用します。 OpenCvで読み込まれた画像をmatplotlibに表示すると、チャンネルは先頭に戻ります。

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

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

それをあなたのプロットで使用してください。

関連する問題