我刚刚开始使用OpenCV和Python。我已经安装了它并开始使用简单的脚本。我想加载一个彩色图像和B / W相同的图像。这是简单的代码:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img1 = cv2.imread("tiger.jpg",3)
img2 = cv2.imread("tiger.jpg",0)
plt.subplot(121),plt.imshow(img1),plt.title('TIGER_COLOR')
plt.subplot(122),plt.imshow(img2),plt.title('TIGER_BW')
plt.show()
好的,这是我用它真实颜色的图像:https://pixabay.com/en/tiger-cub-tiger-cub-big-cat-feline-165189/。 问题是,当我显示此代码的结果时,我得到了这个:
如您所见,两张图片的颜色都不对。我认为这是因为我使用的是开源图形驱动程序,但我安装了私有驱动程序,问题仍在继续。
我该如何解决这个问题?问题是什么?有任何想法吗? 谢谢!
答案 0 :(得分:10)
OpenCV不使用RGB,它使用BGR(代表蓝色,绿色,红色)。你需要交换红色和蓝色的顺序。应使用以下代码:
img1 = cv2.imread("tiger.jpg",3)
b,g,r = cv2.split(img2) # get b, g, r
rgb_img1 = cv2.merge([r,g,b]) # switch it to r, g, b
plt.subplot(121),plt.imshow(rgb_img1),plt.title('TIGER_COLOR')
此外,您的灰度图像很好,但您正在使用色彩图。一定要使用
plt.imshow(img2, cmap='gray')