matplotlib imshow 扭曲颜色

matplotlib imshow distorting colors

我尝试使用 matplotlib.pyplot 中的 imshow 函数,它非常适合显示灰度图像。当我尝试表示 rgb 图像时,它改变了颜色,显示出更偏蓝的颜色。

看例子:

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

生成的图像类似于 this

而原图是this

如果它与颜色图有关,有什么方法可以使其与 rgb 图像一起使用?

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

这对我有用:

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

同样的想法,但更好更稳健的方法是使用 "ellipsis" proposed by :

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