OpenCV的BGR和PyPlot的RGB

Meg*_*rji 2 python opencv image matplotlib

我了解到OpenCV的颜色顺序是BGR,而Matpotlib的Pyplot的颜色顺序是RGB。因此,我开始尝试使用这两个库读取和显示图像。这是我尝试过的图像:在此输入图像描述

它只是一个黑白图像,某些部分有红色。现在,当我使用 pyplot.imshow() 显示 OpenCV 读取的图像副本时,领带和鞋子的颜色变为蓝色。当我使用 cv2.imshow() 显示 pyplot.imread() 读取的图像副本时,也发生了同样的情况。但是,当我使用 cv2.imshow() 显示 cv2.imread() 读取的图像副本并使用 plt.imshow() 显示 plt.imread() 读取的副本时,颜色保持不变。我只是很好奇,想了解执行此类操作时幕后发生的事情。有人能帮我吗?

Dae*_*ter 5

假设你有一个像这样的向量:[0, 0, 255]

您知道有两种不同的颜色编码:RGB 和 BGR。因此,在第一种情况下,您有蓝色,在第二种情况下,您有红色。

现在,我们调用RGB_Reader和BGR_Reader两个系统来打开数字并显示出来。

如果我用 BGR_Reader 打开图像,我会得到[0, 0, 255]. 我把它传给RGB_Reader,仍然是[0, 0, 255]。我看到蓝色了 当我传递它时,我会传递[0, 0, 255]。我用 RGB_Reader 再次打开它,它又是蓝色的。

反之亦然。

这对你来说有意义吗?矢量不会改变,但它的解码方式会改变。

现在介绍另一个东西,叫做jpg_encoder。那个人告诉人们把蓝色、红色和绿色放在哪里,并且可能会重新排序。