我正在尝试使用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显示的图像不同。
甚至直方图也会失真,而不仅仅是显示
如何避免图像上的蓝色阴影
答案 0 :(得分:11)
警告: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