一、什麼是cv2庫
cv2庫是Python中用來增強圖像處理能力的庫。OpenCV是一個由英特爾公司開源的計算機視覺庫。OpenCV始於1999年,如今這個開源計算機視覺庫包含了超過2500個優化的算法。在cv2庫中,opencv-python是包含了OpenCV庫Python版本的包,它封裝了許多OpenCV的函數和類,可以快速地完成圖片和視頻處理等功能。以下將演示cv2的安裝步驟。
二、安裝Python的cv2庫
在Windows系統中安裝cv2庫,只需要通過pip指令安裝即可。需要在CMD命令行或者Anaconda Prompt下使用以下指令進行安裝:
pip install opencv-python
在Linux或Mac中,需要使用以下指令進行安裝:
pip3 install opencv-python
在安裝完成後,可以通過以下指令進行驗證:
import cv2 print(cv2.__version__)
如果cv2庫能夠順利導入且版本號打印出來,則證明該庫已成功安裝。
三、cv2庫的基礎應用
1. 讀取並顯示一張圖片
以下代碼演示如何使用cv2庫讀取並顯示一張圖片:
import cv2 img = cv2.imread('image.jpg') cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows()
上面的代碼中,cv2.imread(‘image.jpg’)函數會讀取當前目錄下的image.jpg文件。cv2.imshow(‘image’, img)函數則會創建一個名為image的窗口用來展示讀取到的圖片,cv2.waitKey(0)函數則會暫停並等待用戶按下任意鍵,直至cv2.destroyAllWindows()函數釋放全部資源並關閉所有窗口。
2. 讀取並顯示一段視頻
以下代碼演示如何使用cv2庫讀取並展示一段視頻:
import cv2 cap = cv2.VideoCapture('video.mp4') while True: ret, frame = cap.read() if ret: cv2.imshow('video', frame) if cv2.waitKey(25) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
上面的代碼中,cv2.VideoCapture(‘video.mp4’)函數會讀取當前目錄下的video.mp4視頻文件。接下來會從視頻中逐幀讀取每一幀並通過cv2.imshow(‘video’, frame)函數來顯示。當用戶按下鍵盤上的’q’鍵時,則表示程序終止。最後會通過cap.release()函數釋放視頻資源,並通過cv2.destroyAllWindows()關閉所有窗口。
四、cv2庫的進階應用
1. 圖片縮放
以下代碼演示如何使用cv2.resize()函數對一張圖片進行縮放:
import cv2 img = cv2.imread('image.jpg') # resize 圖片 img_resized = cv2.resize(img, (800, 600), interpolation = cv2.INTER_AREA) cv2.imshow('image', img_resized) cv2.waitKey(0) cv2.destroyAllWindows()
上述代碼中,cv2.resize()函數接收兩個參數,分別是圖片和目標大小。最後一個參數interpolation表示如何進行圖片插值的處理方式,常用的有兩種:cv2.INTER_AREA和cv2.INTER_CUBIC。cv2.imshow()函數用於顯示縮放後的圖片。
2. 圖片旋轉
以下代碼演示如何使用cv2.getRotationMatrix2D()函數對一張圖片進行旋轉:
import cv2 import numpy as np img = cv2.imread('image.jpg') # rotate 圖片 (h, w) = img.shape[:2] center = (w / 2, h / 2) M = cv2.getRotationMatrix2D(center, 45, 1.0) img_rotated = cv2.warpAffine(img, M, (w, h)) cv2.imshow('image', img_rotated) cv2.waitKey(0) cv2.destroyAllWindows()
上述代碼中,cv2.getRotationMatrix2D()函數接收三個參數,分別是旋轉中心、旋轉角度和縮放比例。cv2.warpAffine()函數則是用於對圖片進行仿射變換,這裡通過cv2.getRotationMatrix2D()計算出的旋轉矩陣來實現旋轉的操作。
3. Canny邊緣檢測
以下代碼演示如何使用cv2.Canny()函數對一張圖片進行邊緣檢測:
import cv2 img = cv2.imread('image.jpg') #邊緣檢測 edges = cv2.Canny(img,100,200) cv2.imshow('image', edges) cv2.waitKey(0) cv2.destroyAllWindows()
上述代碼中,cv2.Canny()函數接收三個參數,分別是圖片、最小閾值和最大閾值。通過調整這兩個閾值能夠得到不同的效果。
4. 圖片腐蝕
以下代碼演示如何使用cv2.erode()函數對一張圖片進行腐蝕處理:
import cv2 import numpy as np img = cv2.imread('image.jpg') # 腐蝕處理 kernel = np.ones((5,5),np.uint8) img_eroded = cv2.erode(img,kernel,iterations = 1) cv2.imshow('image', img_eroded) cv2.waitKey(0) cv2.destroyAllWindows()
上述代碼中,cv2.erode()函數接收三個參數,分別是圖片、卷積核和迭代次數。這裡使用了一個5×5大小的卷積核,迭代次數為1。
五、總結
本文介紹了Python中用於加強圖像處理能力的cv2庫,並演示了cv2庫的基礎應用和進階應用。通過學習本文中的內容,您可以了解到如何安裝cv2庫,並了解cv2庫的常用函數和使用方法。同時,您還可以通過調整參數實現不同的圖像處理效果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/312529.html