matplotlib为图像添加蓝色阴影

时间:2016-10-16 05:40:58

标签: python opencv image-processing matplotlib

我正在尝试使用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 个答案:

答案 0 :(得分:11)

请参阅: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模式显示。因此彩色图像将无法正确显示   在Matplotlib中,如果使用OpenCV读取图像。请参阅练习   了解更多详情。

您可以使用以下行替换plt.imshow(image)行:

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

答案 1 :(得分:4)

补充@ophir答案。 您还可以使用cv2.cvtColor将BGR转换为RGB