搜尋
首頁後端開發Python教學Python中的電腦視覺庫opencv詳解

Python中的電腦視覺庫opencv詳解

Jun 10, 2023 pm 08:09 PM
python電腦視覺opencv

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

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
Python的科學計算中如何使用陣列?Python的科學計算中如何使用陣列?Apr 25, 2025 am 12:28 AM

Arraysinpython,尤其是Vianumpy,ArecrucialInsCientificComputingfortheireftheireffertheireffertheirefferthe.1)Heasuedfornumerericalicerationalation,dataAnalysis和Machinelearning.2)Numpy'Simpy'Simpy'simplementIncressionSressirestrionsfasteroperoperoperationspasterationspasterationspasterationspasterationspasterationsthanpythonlists.3)inthanypythonlists.3)andAreseNableAblequick

您如何處理同一系統上的不同Python版本?您如何處理同一系統上的不同Python版本?Apr 25, 2025 am 12:24 AM

你可以通過使用pyenv、venv和Anaconda來管理不同的Python版本。 1)使用pyenv管理多個Python版本:安裝pyenv,設置全局和本地版本。 2)使用venv創建虛擬環境以隔離項目依賴。 3)使用Anaconda管理數據科學項目中的Python版本。 4)保留系統Python用於系統級任務。通過這些工具和策略,你可以有效地管理不同版本的Python,確保項目順利運行。

與標準Python陣列相比,使用Numpy數組的一些優點是什麼?與標準Python陣列相比,使用Numpy數組的一些優點是什麼?Apr 25, 2025 am 12:21 AM

numpyarrayshaveseveraladagesoverandastardandpythonarrays:1)基於基於duetoc的iMplation,2)2)他們的aremoremoremorymorymoremorymoremorymoremorymoremoremory,尤其是WithlargedAtasets和3)效率化,效率化,矢量化函數函數函數函數構成和穩定性構成和穩定性的操作,製造

陣列的同質性質如何影響性能?陣列的同質性質如何影響性能?Apr 25, 2025 am 12:13 AM

數組的同質性對性能的影響是雙重的:1)同質性允許編譯器優化內存訪問,提高性能;2)但限制了類型多樣性,可能導致效率低下。總之,選擇合適的數據結構至關重要。

編寫可執行python腳本的最佳實踐是什麼?編寫可執行python腳本的最佳實踐是什麼?Apr 25, 2025 am 12:11 AM

到CraftCraftExecutablePythcripts,lollow TheSebestPractices:1)Addashebangline(#!/usr/usr/bin/envpython3)tomakethescriptexecutable.2)setpermissionswithchmodwithchmod xyour_script.3)

Numpy數組與使用數組模塊創建的數組有何不同?Numpy數組與使用數組模塊創建的數組有何不同?Apr 24, 2025 pm 03:53 PM

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,內存效率段

Numpy數組的使用與使用Python中的數組模塊陣列相比如何?Numpy數組的使用與使用Python中的數組模塊陣列相比如何?Apr 24, 2025 pm 03:49 PM

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

CTYPES模塊與Python中的數組有何關係?CTYPES模塊與Python中的數組有何關係?Apr 24, 2025 pm 03:45 PM

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器