matplotlib imshow扭曲的颜色

时间:2018-05-31 18:42:47

标签: python opencv matplotlib imshow

我尝试使用matplotlib.pyplot中的imshow函数,它可以很好地显示灰度图像。当我试图表示rgb图像时,它会改变颜色,显示更蓝色的颜色。

查看示例:

import cv2
import matplotlib.pyplot as plt
lena=cv2.imread("lena.jpg")
plt.imshow(lena)
plt.show()

生成的图像类似于this

原始图片为this

如果它是与colormap相关的东西,有什么方法可以使它与rgb图像一起使用?

2 个答案:

答案 0 :(得分:9)

这对我有用:

plt.imshow(lena[:,:,::-1]) # RGB-> BGR

同样的想法,但更好,更强大的方法是使用"ellipsis"提出的@rayryeng

plt.imshow(lena[...,::-1])

答案 1 :(得分:8)

OpenCV代表BGR中的图像,而不是我们期望的RGB。由于它的顺序相反,您往往会在图像中看到蓝色。 尝试使用以下行(代码中的注释)从BGR转换为RGB:

import cv2
import matplotlib.pyplot as plt
lena=cv2.imread("lena.jpg")
#plt.imshow(lena)
#plt.axis("off")
#Converts from BGR to RGB
plt.imshow(cv2.cvtColor(lena, cv2.COLOR_BGR2RGB))
plt.show()