關於matplotlib與opencv讀取和顯示圖片

在這裏插入圖片描述
最近在做一個圖像處理的大作業,涉及到matplotlib與OpenCV的一些圖片讀取與顯示的問題,感覺非常有意思,需要把它徹底掌握理解,遂寫一篇博客記錄一下自己的學習筆記,以備遺忘時能迅速找回知識點。希望對自己CV的學習有一些幫助。好,我們開始吧。

import cv2  # 利用opencv讀取圖像
import numpy as np
import matplotlib.pyplot as plt # 利用matplotlib顯示圖像

path = 'C:/Users/86187/Desktop/image/'
img = cv2.imread(path + "lena.png") #讀取圖像
# OpenCV顯示圖像
cv2.imshow('lena', img)
cv2.waitKey(0)

在這裏插入圖片描述
這是lena女神的原圖,OpenCV讀取並顯示的結果。
那我們用OpenCV讀取,用matplotlib顯示效果如何呢?

# matplotlib顯示圖像
plt.imshow(img)
plt.axis('off')
plt.show()

在這裏插入圖片描述
看,圖片就像變了個顏色似的,看來這樣顯示是有問題的。這到底是怎麼回事兒呢?原來啊,OpenCV讀取圖片(cv2.imread())後,圖像的顏色通道順序是[B, G, R],和matplotlib讀取圖片(plt.imread())後,圖像的顏色通道順繼續[R, G, B]恰好是相反的。
這是,我們要想讓圖片正常顯示,需要進行通道交換。

img = img[:,:,(2,1,0)] # 交換B和R通道
# matplotlib顯示圖像
plt.imshow(img)
plt.axis('off')
plt.show()

在這裏插入圖片描述
現在就正常了!
接下來是matplotlib顯示灰度圖的問題。

img = cv2.imread(path + 'lena.png', 0)
cv2.imshow('lena', img)
cv2.waitKey(0)

在這裏插入圖片描述
我們看到圖像已經成功轉換爲了灰度圖。
接下來我們用matplotlib來顯示看看。

img = cv2.imread(path + 'lena.png', 0)
plt.imshow(img)
plt.axis('off')
plt.show()

在這裏插入圖片描述
看,明明顯示的是灰度圖,它怎麼突然有顏色了呢?你說無中生有也就罷了,怎麼還變成了綠色??
原來啊,matplotlib顯示圖像,默認以三通道顯示圖像,我們需要在plt.imshow()裏添加參數。

img = cv2.imread(path + 'lena.png', 0)
plt.imshow(img, cmap='gray')
plt.axis('off')
plt.show()

在這裏插入圖片描述
看,這下就OK了吧!
參考內容–>傳送門

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章