序言
筆者最近做了兩個CV領域的項目,因為數據量不足所以主要使用的是傳統的CV方法。這時候不得不誇一句opencv庫,讓復雜的算法原理變得如此簡單(調包調參俠表示很驕傲)。所以閑暇下來對opencv的方法進行整理,一是鞏固之前學到的知識,二是希望和廣大朋友們分享。話不多言,咱們開始~
一、圖像讀取
使用 OpenCV讀取圖像比較簡單,可以使用此函數讀取圖像。
cv2.imread()
圖像應該在工作目錄或圖像的完整路徑給出。我們需要給它傳遞兩個參數,第二個參數是一個標志,它指定了讀取圖像的方式。
- CV. IMREAD_ COLOR:加載彩色圖像。任何圖像的透明度都會被忽視。它是默認標志。
- CV. IMREAD_GRAYSCALE:以灰度模式加載圖像 。
- CV. IMREAD_UNCHANGED:加載圖像,包括 alpha通道。
注意除了這三個標志,我們可以分別簡單地傳遞整數1、0或-1。
二、圖像顯示
顯示圖像可以用
cv2.imshow()
它在窗口中顯示圖像。窗口自動適合圖像尺寸。第一個參數是窗口名稱,它是一個字符串。第二個參數是我們的對象。我們可以根據需要創建任意多個窗口,但可以使用不同的窗口名稱。
比如下面的例子,讀取一張圖片的灰度圖。
import cv2 img = cv2.imread('cat.png', 0) print(img) cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows()
cv.waitKey()是一個鍵盤綁定函數。其參數是以毫秒為單位的時間。該函數等待任何鍵盤事件指定的毫秒。如果我們在這段時間內按下任何鍵,程序繼續運行。如果0被傳遞,它將無限期地等待一次敲擊鍵。它也可以設置為檢測特定的按鍵,例如,如果按下按鍵 a 等。
cv.destroyAllWindows()只會破壞我們創建的所有窗口。如果要銷毀任何特定的窗口,我們可以使用函數 cv.destroyWindow()在其中傳遞確切的窗口名稱作為參數。
注意:在特殊情況下,我們可以創建一個空窗口,然后再將圖像加載到該窗口。在這種情況下,我們可以指定窗口是否可調整大小。這是通過功能cv.namedWindow()完成的。默認情況下,該標志為cv.WINDOW_AUTOSIZE。但是,如果將標志指定為cv.WINDOW_NORMAL,則可以調整窗口大小。
展示圖像時還可以用Matplotlib來展示,但是需要注意的是,OpenCV加載的彩色圖像處於BGR模式,但是Matplotlib以RGB模式顯示。(筆者就在這里踩了坑)因此,如果使用OpenCV讀取彩色圖像,則Matplotlib中將無法正確顯示彩色圖像。
三、圖像保存
使用下列函數保存圖像。
cv2.imwrite()
它需要傳遞兩個參數,第一個參數是文件名,第二個參數是要保存的圖像。 例如:
cv2.imwrite('cat.png',img)
這會將圖像以PNG格式保存在工作目錄中。
