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

标签 python opencv

<分区>

我刚开始使用 OpenCV 和 Python。我已经安装了它并开始使用一个简单的脚本。我想加载彩色图像和黑白图像。这是简单的代码:

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()

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

enter image description here

如您所见,两张图片的颜色都不对。我以为是因为我使用的是开源图形驱动程序,但我安装了私有(private)驱动程序,问题仍然存在。

我该如何解决这个问题?有什么问题?有任何想法吗? 谢谢!

最佳答案

OpenCV 不使用 RGB,它使用 BGR(代表蓝色、绿色、红色)。您需要交换红色和蓝色的顺序。

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

b,g,r = cv2.split(img1)           # 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')

此外,您的灰度图像很好,但您使用的是颜色图。确保使用

plt.imshow(img2, cmap='gray')

关于python - 使用 OpenCV (Python) 读取图像的颜色错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39903809/

相关文章:

python - 检查两个列表之间的公共(public)元素是否顺序相同

c++ - OpenCV:矩阵元素访问

c++ - 这段 OpenCV 代码是在 GPU 上运行还是在 CPU 上运行?

python - 在 android/python 中使用 opencv 处理视频的问题

java - 使用 OpenCV 验证申请表

python - os.open/read/write/close 的可接受使用?

python - 如何在用 Python 编写紧凑但复杂的代码和易于理解但较长的代码之间做出选择?

python - Pipenv 无法安装软件包

python - 如何将 1 行输出更改为多行

python - 如何将 OpenCV 图像数据从 Python 转换为 C++?