matplotlib imshow扭曲的颜色

dbe*_*rga 9 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()
Run Code Online (Sandbox Code Playgroud)

生成的图像是这样的

虽然原始图像是这样的

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

AGN*_*zer 12

这对我有用:

plt.imshow(lena[:,:,::-1]) # RGB-> BGR
Run Code Online (Sandbox Code Playgroud)

同样的想法,但更好,更健壮的方法是使用@rayryeng提出的"省略号":

plt.imshow(lena[...,::-1])
Run Code Online (Sandbox Code Playgroud)

  • 你也可以做`lena [...,:: - 1]`.开头的省略号会自动收集最后一个维度之前的所有维度. (4认同)

小智 11

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()
Run Code Online (Sandbox Code Playgroud)