我了解到OpenCV的色序是BGR,而Matpotlib的Pyplot的色序是RGB。所以我开始尝试使用这两个库读取和显示图像。这是我试验过的图像:
这只是一张黑白图像,某些部分带有红色。现在,当我使用 pyplot.imshow() 显示 OpenCV 读取的图像副本时,领带和鞋子的颜色变为蓝色。当我使用 cv2.imshow() 显示 pyplot.imread() 读取的图像副本时,也会发生同样的情况。但是,当我使用 cv2.imshow() 显示 cv2.imread() 读取的图像副本并使用 plt.imshow() 显示 plt.imread() 读取的副本时,颜色保持不变。 我只是好奇,想知道执行此类操作时幕后发生的事情。有人可以帮我吗?
最佳答案
假设您有这样一个向量:[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。那个告诉人们把蓝色、红色和绿色放在哪里,并且可能会重新排序。
关于python - OpenCV BGR 和 PyPlot RGB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61010960/