Matplotlab顯示OpenCV讀取到的圖像
一. 確認圖像的數組類型
在使用 OpenCV 的 cv2.imread()
函數讀取圖像時,第二個參數(標志)決定了圖像的讀取方式。具體來說,0
、1
和 -1
分別對應不同的讀取模式:
讀取模式 | 標志 | 值 |
---|---|---|
灰度 | cv2.IMREAD_GRAYSCALE | 0 |
彩色(忽略透明度通道) | cv2.IMREAD_COLOR | 1 |
彩色(包括 Alpha 透明度通道,如果存在) | cv2.IMREAD_UNCHANGED | -1 |
這里不討論處理包含透明度通道的圖像
使用 img.shape
判斷圖像類型
在 OpenCV 中,當你使用 cv2.imread()
函數讀取一張圖像時,它會將圖像加載到內存中,并將其存儲為一個 NumPy 數組。img.shape
是 NumPy 數組的一個屬性,它返回一個包含數組各維度大小的元組。通過檢查這個元組的長度(即維度的數量),我們可以確定數組的類型或結構。
- 灰度圖像:通常是一個二維數組,表示為
(height, width)
,img.shape
返回的元組長度為 2。 - 彩色圖像:通常是一個三維數組,表示為
(height, width, channels)
,channels
表示顏色通道的數量(例如 RGB 圖像有三個通道,形狀通常是(height, width, 3)
),img.shape
返回的元組長度為 3。
# img 是一個 NumPy 數組 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
,所以需要讀取時轉換通道
plt.imshow(img[:, :, ::-1])
理解 img[:, :, ::-1]
第一維和第二維分別代表圖像的高度和寬度,第三維有三個通道:紅(R)、綠(G)、藍(B)
:
表示選取所有元素。::-1
是Python中的切片語法,表示從尾到頭(逆序)選擇元素。這里的意圖通常是翻轉最后一個維度的數據,比如將RGB格式轉換為BGR格式,或者相反。
到此這篇關于Matplotlab顯示OpenCV讀取到的圖像的文章就介紹到這了,更多相關Matplotlab OpenCV圖像內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python Dataframe 指定多列去重、求差集的方法
今天小編就為大家分享一篇Python Dataframe 指定多列去重、求差集的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07在Django中自定義filter并在template中的使用詳解
這篇文章主要介紹了在Django中自定義filter并在template中的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05