OpenCV和Matplotlib中的像素排序略有不同。
OpenCV遵循BGR顺序,而matplotlib可能遵循RGB顺序。
因此,当使用pylab函数显示OpenCV中加载的图像时,可能需要将其转换为RGB模式。(我不确定是否有简单的方法)。以下方法演示:import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('messi4.jpg')
b,g,r = cv2.split(img)
img2 = cv2.merge([r,g,b])
plt.subplot(121);plt.imshow(img) # expects distorted color
plt.subplot(122);plt.imshow(img2) # expect true color
plt.show()
cv2.imshow('bgr image',img) # expects true color
cv2.imshow('rgb image',img2) # expects distorted color
cv2.waitKey(0)
cv2.destroyAllWindows()
注意:请查看下面@Amro的评论,了解BGR和RGB之间更好的转换方法。img2 = img[:,:,::-1]。非常简单。
运行此代码并亲自查看结果的差异。下面是我得到的:
使用Matplotlib:
使用OpenCV: