如果你是用OpenCV的imread函數讀取圖像,從而得到圖像多維數組的;由於OpenCV中描述圖像的多維數組三通道依序為BGR,而matplotlib中的imshow函數依RGB的順序顯示圖像,所以顏色上顯示混亂、有圖像失真毛病。
plt.imshow(x[:,:,[2,1,0]])
plt.imshow(img[:, :, ::-1])
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
import cv2 as cv
import matplotlib.pyplot as plt
img = cv.imread('images/lena.png')
plt.figure()
plt.subplot(1,2,1)
arr = plt.hist(img.ravel())
plt.subplot(1,2,2)
plt.imshow(img[:, :, ::-1])
plt.show()
print(img.ravel())
print(arr)
cv.waitKey()
cv.destroyAllWindows()
顯示很正常