OpenCV 中的RGB2BGR无法正确转换颜色


pil_image = Image.open('1.png')
opencvImage = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
plt.imshow(pil_image)

COLOR_RGB2BGR无法正确转换颜色的任何原因?

我试图保留红色,但它将其更改为紫色。

当您使用 PIL 打开图像时,如下所示:

im = Image.open('1.png')

你会得到一个RGB图像。

然后(不必要地)将其转换为 OpenCV 使用的 BGR:

opencvimage = cvtColor()

但你用使用 RGB 的matplotlib显示它!!

我告诉过你你会让自己感到困惑🤣


如果要使用 PIL 显示 RGB PIL 图像:

pRGB = Image.open('1.png')  # PIL RGB
pRGB.show()

如果要使用 matplotlib 显示 RGB PIL 图像:

pRGB = Image.open('1.png')  # PIL RGB
nRGB = np.array(pRGB)       # Numpy RGB
plt.imshow(nRGB)

如果要使用 matplotlib 显示 OpenCV 图像:

nBGR = cv2.imread('1.png')
plt.imshow(nBGR[:,:,::-1])

这是正常情况。因为如果您的源图像在转换为 BGR 时是 RGB 格式,那么它的通道顺序当然会发生变化。所以这很正常。

例如:

if pixel of source = (12,102,53) = (R,G,B)  then this will become
(53,102,12) = (B,G,R)

注意:您可以使用此网站查看像素值。只需更改频道的顺序,您就会明白。

这也是之前讨论过的帖子。

相关内容

  • 没有找到相关文章

最新更新