python - OpenCV在加载时为彩色图像提供错误的颜色

标签 python image opencv colors rgb

我正在 Python OpenCV 中加载彩色图像并进行绘图。但是,我得到的图像的颜色都混在一起了。

代码如下:

import cv2
import numpy as np
from numpy import array, arange, uint8 
from matplotlib import pyplot as plt


img = cv2.imread('lena_caption.png', cv2.IMREAD_COLOR)
bw_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

images = []
images.append(img)
images.append(bw_img)

titles = ['Original Image','BW Image']

for i in xrange(len(images)):
    plt.subplot(1,2,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])

plt.show()

这是原图: enter image description here

这是绘制的图像: enter image description here

最佳答案

OpenCV 使用 BGR 作为图像的默认颜色顺序,matplotlib 使用 RGB。当您在 matplotlib 中显示使用 OpenCv 加载的图像时, channel 将返回到前面。

解决此问题的最简单方法是使用 OpenCV 将其显式转换回 RGB,就像您在创建灰度图像时所做的那样。

RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

然后在你的情节中使用它。

关于python - OpenCV在加载时为彩色图像提供错误的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316447/

相关文章:

python - 检查一个对象是否在 python 中是可订购的?

python - 提取Tensorflow对象检测API的图像对象

python - python中的ssl证书认证

python - 在 numpy 中将 2 个图像堆叠在一起

python-3.x - 在 windows xp 中运行由 python 3.5 制作的独立 exe

python - 你在哪里存储 jinja 中的变量?

java - 除非 JFrame.validate(),否则 JPanel JComponent 不会重新绘制;将组件添加到可见框架后调用

c++ - 如何修复 "At least two classes are needed to perform a LDA"?

python - 如何使用OpenCV从缓冲区读取图像?

html - CSS Button 链接添加多个不同的图像