2016-09-04 21 views
17

Tôi đang tải trong một hình ảnh màu trong Python OpenCV và vẽ đồ thị tương tự. Tuy nhiên, hình ảnh tôi nhận được có màu sắc của nó trộn lẫn.OpenCV đưa ra màu sai cho hình ảnh màu khi tải

Đây là mã:

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

Dưới đây là hình ảnh ban đầu: enter image description here

Và đây là hình ảnh vẽ: enter image description here

Trả lời

33

OpenCV sử dụng BGR trật tự màu sắc mặc định của nó cho hình ảnh, matplotlib sử dụng RGB. Khi bạn hiển thị một hình ảnh được tải với OpenCv trong matplotlib các kênh sẽ trở lại phía trước.

Cách dễ nhất để sửa lỗi này là sử dụng OpenCV để chuyển đổi nó trở lại RGB một cách rõ ràng, giống như khi bạn tạo hình ảnh thang độ xám.

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

Và sau đó sử dụng điều đó trong cốt truyện của bạn.

Các vấn đề liên quan