Matplotlab顯示OpenCV讀取到的圖像
一. 確認圖像的數(shù)組類型
在使用 OpenCV 的 cv2.imread()
函數(shù)讀取圖像時,第二個參數(shù)(標志)決定了圖像的讀取方式。具體來說,0
、1
和 -1
分別對應(yīng)不同的讀取模式:
讀取模式 | 標志 | 值 |
---|---|---|
灰度 | cv2.IMREAD_GRAYSCALE | 0 |
彩色(忽略透明度通道) | cv2.IMREAD_COLOR | 1 |
彩色(包括 Alpha 透明度通道,如果存在) | cv2.IMREAD_UNCHANGED | -1 |
這里不討論處理包含透明度通道的圖像
使用 img.shape
判斷圖像類型
在 OpenCV 中,當你使用 cv2.imread()
函數(shù)讀取一張圖像時,它會將圖像加載到內(nèi)存中,并將其存儲為一個 NumPy 數(shù)組。img.shape
是 NumPy 數(shù)組的一個屬性,它返回一個包含數(shù)組各維度大小的元組。通過檢查這個元組的長度(即維度的數(shù)量),我們可以確定數(shù)組的類型或結(jié)構(gòu)。
- 灰度圖像:通常是一個二維數(shù)組,表示為
(height, width)
,img.shape
返回的元組長度為 2。 - 彩色圖像:通常是一個三維數(shù)組,表示為
(height, width, channels)
,channels
表示顏色通道的數(shù)量(例如 RGB 圖像有三個通道,形狀通常是(height, width, 3)
),img.shape
返回的元組長度為 3。
# img 是一個 NumPy 數(shù)組 if len(img.shape) == 2: print("這是一個灰度圖像") elif len(img.shape) == 3: print("這是一個彩色圖像")
二. 使用Matplotlab顯示
灰度圖像
plt.imshow(img, cmap='gray')
理解cmap='gray'
直接imshow
會使用默認的顏色映射(通常是 viridis
),這通常不是期望的灰度效果。需要明確指定顏色映射 (cmap) 為 'gray',這樣可以確保圖像中的每個像素值都被正確地映射到灰度級別。
彩色圖像
OpenCV讀取到的色彩通道順序為BGR
, Matplotlab讀取顯示的色彩通道為RGB
,所以需要讀取時轉(zhuǎn)換通道
plt.imshow(img[:, :, ::-1])
理解 img[:, :, ::-1]
第一維和第二維分別代表圖像的高度和寬度,第三維有三個通道:紅(R)、綠(G)、藍(B)
:
表示選取所有元素。::-1
是Python中的切片語法,表示從尾到頭(逆序)選擇元素。這里的意圖通常是翻轉(zhuǎn)最后一個維度的數(shù)據(jù),比如將RGB格式轉(zhuǎn)換為BGR格式,或者相反。
到此這篇關(guān)于Matplotlab顯示OpenCV讀取到的圖像的文章就介紹到這了,更多相關(guān)Matplotlab OpenCV圖像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實現(xiàn)圖像尺寸和格式轉(zhuǎn)換處理的示例詳解
這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)圖像尺寸獲取和格式轉(zhuǎn)換處理的功能,文中的示例代碼講解詳細,感興趣的可以了解一下2023-04-04Python Dataframe 指定多列去重、求差集的方法
今天小編就為大家分享一篇Python Dataframe 指定多列去重、求差集的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07在Django中自定義filter并在template中的使用詳解
這篇文章主要介紹了在Django中自定義filter并在template中的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05