OpenCV 簡介與安裝方法

董董灿是个攻城狮發表於2024-12-04

大家好啊,我是董董燦。

如果你在做計算機視覺相關的工作,肯定少不了使用 OpenCV 庫。

《計算機視覺專欄》的傳統計算機視覺部分,我曾經使用 OpenCV 進行了很多影像的處理,比如邊緣檢測。

剛好最近在整理一份文稿,寫了關於 OpenCV 的內容,所以就摘抄一部分放在這裡,內容主要是關於 Opencv 的介紹以及安裝方法。

有需要的朋友可以收藏一下。

什麼是 OpenCV?

OpenCV 是一個被廣泛使用的開源計算機視覺庫,它提供了大量的傳統影像 處理演算法和基於深度學習的計算機視覺演算法,以及用於影像和影片處理的方法。

OpenCV 的主要核心演算法使用 C++ 編寫,並且對外封裝了 C++ 和 Python 語 言的 API,方便呼叫。

OpenCV 具有以下幾個特點 :

程式碼開源

OpenCV 的程式碼是開源的,在遵守開源協議的條件下,我們可以在官方網址免費下載原始碼學習並使用。

平臺無關

OpenCV 的庫可以在多種系統平臺上執行,包括 Windows、Linux、MacOS、Android 和 iOS 等,這樣可以確保使用者在不同平臺上使用和部 署,遷移成本非常低。

庫很小

OpenCV 的庫非常小,編譯完成後總共不到 100MB,非常適合在一些小記憶體的場景下進行部署,比如一些影像檢測終端。

效能好

由於 OpenCV 的核心演算法是使用 C++ 編寫的,並且可以很好地支援多執行緒和 SIMD 的執行模式,因此,其中涉及的演算法執行效率很高,效能很好。

上述幾點便是 OpenCV 庫的幾個重要特點,也正因為這幾個特點,使得 OpenCV 無論在學術界還是工業界都得到了廣泛的應用。

OpenCV 可以用來做什麼?

OpenCV 提供了大量的介面,用於影像和影片的 讀取、寫入、顯示和處理,下面再簡單介紹 OpenCV 的主要應用場景:

影像、影片處理

OpenCV 可以很方便地讀取、寫入和處理影像以及影片,它提供了一些影像處理函式,如濾波、閾值處理、形態學處理和邊緣檢測等。

目標檢測和跟蹤

OpenCV 包含了一些目標檢測和目標跟蹤的成套函式, 這些函式可以用於檢測和跟蹤影像中的目標,例如影像中的人臉、影片中的行人和運動的汽車等。

機器學習

OpenCV 還可以進行一些機器學習的任務,它可以構建支援向量機(SVM)、隨機森林(RandomForest)等演算法,從而完成一些分類、迴歸任務。

OpenCV 環境搭建

安裝和配置

OpenCV 庫在 C++ 開發環境和 python 開發環境下的安裝有所不同。

以下是安裝兩種開發環境中 OpenCV 的詳細步驟。

安裝 python 版本的 OpenCV

安裝 Python

如果環境中還沒有安裝 Python,可以從 Python 官網下載並安裝,建議安裝 Python 3.0 以上版本。

如果你是 Linux 使用者,一般會預設安裝了 Python。

安裝完 Python 後,系統會預設安裝 pip 工具,python 開發環境下需要使用 pip 命令安裝 OpenCV。

安裝 OpenCV

Windows 系統的使用者,按“win+R” 組 合 鍵 打 開 命 令 提 示 符(cmd) 或 PowerShell。

Linux 系統的使用者直接在終端介面進行操作。

輸入以下命令:

pip3 install opencv-python

驗證安裝

在命令列中輸入 Python 來啟動 Python 直譯器,嘗試匯入 cv2 庫並列印其版本來確認安裝是否成功:

import cv2
print(cv2.__version__)

如果沒有錯誤訊息,並且能正確顯示版本號,說明 OpenCV 已經成功安裝。

在上述步驟中,我們使用了 OpenCV 的預編譯包 opencv-python,這是最簡單且最快速的安裝方法。

對於更高階的使用者或需要 OpenCV 的完整功能(包括視 頻處理和 GPU 加速等)的使用者,可能需要從原始碼編譯 OpenCV。

這需要下載 OpenCV 的原始碼、配置編譯選項以及編譯和安裝,過程更為複雜且需要考慮硬體相容性。

安裝 C++ 版本的 OpenCV

C++ 版本的 OpenCV 依賴一些開發庫和工具,在 Linux 系統下透過以下命令安裝這些依賴:

sudo apt updatesudo apt-get install libopencv-dev python3-opencv libopencv-contribdev 

執行上述命令後,即可完成 C++ 版本的 OpenCV,安裝完成後,就可以在 C++ 程式碼中以匯入標頭檔案的方式來使用了,如下:

#include <opencv2/opencv.hpp>
cv::Mat source;
source = cv::imread(file_name);

如果你想學習 AI ,歡迎來新增我的微信 (vx: ddcsggcs),會有很多好玩的AI技術分享,可以諮詢、也可以圍觀朋友圈呀!歡迎檢視我的專欄 >>1. 專欄:計算機視覺入門與調優 , 2. 專欄:Transformer 通關與大模型實戰

相關文章