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)
И затем используйте это в своем заговоре.