首頁  >  文章  >  後端開發  >  Python中的電腦視覺庫opencv詳解

Python中的電腦視覺庫opencv詳解

PHPz
PHPz原創
2023-06-10 20:09:053313瀏覽

電腦視覺是人工智慧的一個分支,它致力於使用電腦來模擬和實現人類視覺系統的功能。在現代科技發展的背景下,電腦視覺被廣泛應用於各種領域,如機器人、安防、醫療、自動駕駛等。

OpenCV(Open Source Computer Vision)是一個跨平台的開源電腦視覺庫,由英特爾公司發起並維護。它提供了豐富的影像處理和電腦視覺功能,包括影像偵測、特徵提取、目標追蹤、人臉辨識等。而Python在機器學習和資料科學領域的流行程度,也使得OpenCV在Python的版本備受關注。本文將介紹OpenCV在Python中的使用方法與具體實作。

安裝OpenCV

在使用OpenCV之前,需要先安裝相關的函​​式庫和相依性。在Python中,可以使用pip指令來安裝。

pip install opencv-python

pip install opencv-contrib-python

這兩個指令分別安裝OpenCV的基礎版和擴充版,擴充版包含一些在基礎版中沒有的功能。

讀取和顯示圖像

使用OpenCV處理圖片的第一步,是將圖片讀入程式。 OpenCV提供了cv2.imread()函數來讀取圖像,讀取後的圖像是以NumPy數組的形式儲存的。

import cv2

img = cv2.imread('example.jpg')

在讀入影像後,可以使用cv2.imshow()函數將圖片顯示出來。這個函數有兩個參數,第一個參數是視窗的名稱,第二個參數是要顯示的圖像。

cv2.imshow('example', img)

使用cv2.waitKey()函數等待使用者按下任何按鍵後,視窗就會自動關閉。

cv2.waitKey(0)

圖像的大小可以使用img.shape來獲取,它會傳回一個三元組(height, width, depth),其中height表示圖像的高度, width表示影像的寬度,depth表示每個像素的位數。若影像是彩色影像,則depth為3,灰階影像則為1。

影像處理和操作

OpenCV提供了豐富的影像處理和操作函數。其中,最簡單的就是灰階化處理,將彩色影像轉換成灰階影像,這需要使用cv2.cvtColor()函數。

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

在灰階化處理中定義了cv2.COLOR_BGR2GRAY,其中cv2是OpenCV模組的名稱。 OpenCV內建影像格式是BGR,而非常見的RGB,因此其參數的順序為BGR。

除了灰階化處理外,還有一些常用的操作函數,如調整影像尺寸、旋轉、平移等。

映像的縮放操作

resized = cv2.resize(img, (600, 600), interpolation=cv2.INTER_AREA)

影像的翻轉操作

flipped = cv2.flip(img, -1)

影像的旋轉操作

(rows, cols) = img.shape[:2]
M = cv2.getRotationMatrix2D ((cols / 2, rows / 2), 45, 1)
rotated = cv2.warpAffine(img, M, (cols, rows))

影像的特徵擷取與偵測

除了基本的影像處理和操作外,OpenCV還提供了各種特徵提取和偵測函數。這些函數可以檢測和提取出影像中的特徵,如角點、直線和輪廓等。

角點偵測是一種廣泛應用於機器視覺和電腦視覺領域的技術,它可用於影像匹配、目標追蹤和三維重建等應用。 OpenCV提供了cv2.goodFeaturesToTrack()函數來完成角點偵測。

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
corners = cv2.goodFeaturesToTrack(gray, 100, 0.01, 10)
corners = np.int0(corners)

#corners = np.int0( ##其中,參數gray是灰階處理後的影像,參數100表示​​偵測的角點數量,參數0.01是qualityLevel,用於表示角點品質因子,參數10是minDistance,表示兩個角點之間的最小距離。

此外,還有其他特徵偵測方法,如SIFT、SURF和ORB等。

結語

OpenCV是一款強大的電腦視覺庫,被廣泛應用於各個領域。在Python中,使用OpenCV可以方便地實現影像處理和電腦視覺的任務。本文介紹了OpenCV在Python中的基本使用方法和常用操作,希望對讀者有幫助。

以上是Python中的電腦視覺庫opencv詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn