Matplotlib 给图像添加蓝色阴影

9
我正在尝试使用matplotlib进行基本操作,但我发现每当我尝试使用matplotlib显示图像时,图像上会添加蓝色阴影。

例如,
代码:
# import the necessary packages
import numpy as np
import cv2
import matplotlib.pyplot as plt

image = cv2.imread("./data/images/cat_and_dog.jpg")
cv2.imshow('image',image) # Display the picture


plt.imshow(image)
plt.show()

cv2.waitKey(0) # wait for closing
cv2.destroyAllWindows() # Ok, destroy the window

"OpenCV GUI 和 Matplotlib 显示的图像不同。"

enter image description here

即使直方图也是扭曲的,而不仅仅是显示。

enter image description here

我该如何避免图片出现蓝色色调?
2个回答

14

请看:http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_image_display/py_image_display.html#using-matplotlib

注意:OpenCV加载的彩色图像以BGR模式显示,而Matplotlib以RGB模式显示。因此,如果使用OpenCV读取图像,则在Matplotlib中显示的彩色图像将不正确。有关详细信息,请参见练习。

您可以用以下代码替换plt.imshow(image)这一行:

im2 = image.copy()
im2[:, :, 0] = image[:, :, 2]
im2[:, :, 2] = image[:, :, 0]
plt.imshow(im2)

是的,我也刚注意到。谢谢。 - Anoop

4

在@ophir回答的基础上,你也可以使用cv2.cvtColor将BGR转换为RGB。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接