使用OpenCV(Python)读取图像的颜色错误

Car*_*los 4 python opencv

我刚开始使用OpenCV和Python.我已经安装它并开始使用简单的脚本.我想在B/W中加载彩色图像和相同图像.这是简单的代码:

import cv2
import numpy as np
from matplotlib import pyplot as plt

img1 = cv2.imread("tiger.jpg",3)
img2 = cv2.imread("tiger.jpg",0)

plt.subplot(121),plt.imshow(img1),plt.title('TIGER_COLOR')
plt.subplot(122),plt.imshow(img2),plt.title('TIGER_BW')

plt.show()
Run Code Online (Sandbox Code Playgroud)

好的,这是我用它的真实颜色的图像:https://pixabay.com/en/tiger-cub-tiger-cub-big-cat-feline-165189/.问题是,当我显示此代码的结果时,我得到了这个:

在此输入图像描述

如您所见,两个图像都有错误的颜色.我认为这是因为我使用的是开源图形驱动程序,但我安装了私有驱动程序,问题仍在继续.

我怎样才能解决这个问题?有什么问题?有任何想法吗?谢谢!

Pau*_*ger 11

OpenCV不使用RGB,它使用BGR(代表蓝色,绿色,红色).你需要交换红色和蓝色的顺序.应使用以下代码:

img1 = cv2.imread("tiger.jpg",3)

b,g,r = cv2.split(img2)           # get b, g, r
rgb_img1 = cv2.merge([r,g,b])     # switch it to r, g, b

plt.subplot(121),plt.imshow(rgb_img1),plt.title('TIGER_COLOR')
Run Code Online (Sandbox Code Playgroud)

此外,您的灰度图像很好,但您正在使用色彩图.一定要使用

plt.imshow(img2, cmap='gray')
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!所有的问题都是RGB和BGR以及颜色映射之间的错误。为什么 OpenCV 决定使用像 RGB 这样非通用的系统 (BGR)? (2认同)