OpenCV——Opencv彩色圖像在matplot中顯示問題的解決

OpenCV——Opencv彩色圖像在matplot中顯示問題的解決

由于OpenCV是以BGR模式加載圖像,而matplotlib則是以常見的RGB模式顯示圖像,因此通過OpenCV加載的彩色圖像用matplotlib顯示時會出現(xiàn)問題,針對此問題,這里主要提出三種解決方案。

我們先來看看直線用matplotlib顯示opencv加載的彩色圖像出現(xiàn)的效果:

import cv2
import matplotlib.pyplot as plt

img = cv2.imread("messi5.jpg")
cv2.imshow("BGR", img)
cv2.waitKey(0)

plt.imshow(img)
plt.title("BGR")
plt.show()
opencv005.png
opencv004.png
opencv顯示效果 matplotlib顯示效果

第一種方法

這種方式利用cv2.split()和cv2.merge()函數(shù)將加載的圖像先按照BGR模式分開哥哥通道,然后再按照RGB模式合并圖像,代碼如下:

import cv2
import matplotlib.pyplot as plt

b, g, r = cv2.split(img)
img2 = cv2.merge([r, g, b])
plt.subplot(1, 2, 1)
plt.imshow(img)
plt.title("BGR")
plt.subplot(1, 2, 2)
plt.imshow(img2)
plt.title('RGB')
plt.show()

效果如下:

opencv006.png

第二種方法

這種方法是使用數(shù)組的逆序,將最后一位轉(zhuǎn)置一下,代碼如下:

import cv2
import matplotlib.pyplot as plt

img = cv2.imread("messi5.jpg")
img2 = img[...,::-1]

plt.subplot(1, 2, 1)
plt.imshow(img)
plt.title("BGR")
plt.subplot(1, 2, 2)
plt.imshow(img2)
plt.title('RGB')
plt.show()

效果如下:

opencv006.png

第三種方法

使用opencv自帶的模式轉(zhuǎn)換函數(shù)cv2.cvtColor(),代碼如下:

import cv2
import matplotlib.pyplot as plt

img = cv2.imread("messi5.jpg")
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.subplot(1, 2, 1)
plt.imshow(img)
plt.title("BGR")
plt.subplot(1, 2, 2)
plt.imshow(img2)
plt.title('RGB')
plt.show()

效果如下:

opencv006.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容