OpenCV各模組介紹

2021-07-10 20:44:36 字數 2553 閱讀 8367

opencv 3 就要正式發布了,但是很多讀者還在用 opencv 2,甚至 opencv 1。你們一定想知道,是否有必要公升級到 3,以及如何提前進行準備。

opencv 3 的改動在哪?

c 風格的api很快將會消失,完全被c++的api替代,**更加簡潔、不易出錯。讀者如果想借助opencv最新的功能,記得清理**中的c風格api。

c++ api 將更加簡潔。

所有的演算法都將繼承自 cv::algorithm 介面。

大型的模組將拆分為小模組,模組將在後面繼續講解。

opencv 3 有這麼多資料夾,從何入手?

cmake/,包含生成工程專案時 cmake 的依賴檔案,用於智慧型搜尋第三方庫,普通開發者不需要關心這個資料夾的內容。

data/,包含 opencv 庫以及範例中用到的資源檔案,haar 物體檢測的分類器位於haarcascades子檔案中。

doc/,包含生成文件所需的原始檔以及輔助指令碼。

include/,包含入口標頭檔案。opencv 子資料夾中是 c 語言風格的api,也就是《learning opencv (第一版)》中描述的api函式,官方將逐漸淘汰 c 風格函式,因此我不推薦大家使用該資料夾中的標頭檔案。opencv2 子檔案中只有乙個 opencv.hpp 檔案,這是 cv2 以及 cv3 推薦使用的標頭檔案。

modules/,包含核心**,opencv 真正的**都在這個資料夾中。opencv 從2.0開始以模組的方式組織各種功能,近兩年模組的數量增長得很快,後面我會依次介紹每個模組的作用。

platforms/,包含交叉編譯所需的工具鏈以及額外的**,交叉編譯指的是在乙個作業系統中編譯供另乙個系統使用的檔案。

我沒有 n 卡,該看哪些模組?

androidcamera/,僅用於android平台,使得可以通過與其他平台相同的介面來控制android裝置的相機。

core/,核心功能模組,定義了基本的資料結構,包括最重要的 mat 類、xml 讀寫、opengl三維渲染等。

imgproc/,全稱為 image processing,即影象處理。包括影象濾波、集合影象變換、直方圖計算、形狀描述子等。影象處理是計算機視覺的重要工具。

imgcodec/,負責各種格式的的讀寫,這個模組是從以前的 highgui 中剝離的。

highgui/,高階圖形介面及與 qt 框架的整合。

calib3d/,相機標定以及三維重建。相機標定用於去除相機自身缺陷導致的畫面形變,還原真實的場景,確保計算的準確性。三維重建通常用在雙目視覺(立體視覺),即兩個標定後的攝像頭觀察同乙個場景,通過計算兩幅畫面中的相關性來估算畫素的深度。

features2d/,包含 2d 特徵值檢測的框架。包含各種特徵值檢測器及描述子,例如 fast、mser、obrb、brisk等。各類特徵值擁有統一的演算法介面,因此在不影響程式邏輯的情況下可以進行替換。

objdetect/,物體檢測模組。包括haar分類器、svm檢測器及文字檢測。

ml/,全稱為 machine learning,即機器學習。包括統計模型、k最近鄰、支援向量機、決策樹、神經網路等經典的機器學習演算法。

flann/,用於在多維空間內聚類及搜尋的近似演算法,做影象檢索的讀者對它不會陌生。

photo/,計算攝影學。包括影象修補、去噪、hdr成像、非真實感渲染等。如果讀者想實現photoshop的高階功能,那麼這個模組必不可少。

stitching/,影象拼接,可用於製作全景圖。

nonfree/,受專利保護的演算法。包含sift和surf,從功能上來說這兩個演算法屬於features2d模組的,但由於它們都是受專利保護的,想在專案中可能需要專利方的許可。

shape/,形狀匹配演算法模組。用於描述形狀、比較形狀。

softcascade/,另一種物體檢測演算法,soft cascade 分類器。包含檢測模組和訓練模組。

superres/,全稱為 super resolution,用於增強影象的解析度。

viz/,三維視覺化模組。可以認為這個模組實現了乙個簡單的三維視覺化引擎,有各種ui控制項和鍵盤、滑鼠互動方式。底層實現基於 vtk 這個第三方庫。

我愛 cuda,買了一堆 tesla 加速卡,該看哪些模組?

這些模組的名稱都以 cuda 為開始,cuda 是顯示卡製造商 nvidia 推出的通用計算語言,在cv3中有大量的模組已經被移植到了 cuda 語言。讓我們依次看一下:

cuda/,cuda-加速的計算機視覺演算法,包括資料結構 cuda::gpumat、 基於cuda的相機標定及三維重建等。

cudaarithm/,cuda-加速的矩陣運算模組。

cudafeatures2d/,cuda-加速的特徵檢測與描述模組,與features2d/模組功能類似。

cudafilters/,cuda-加速的影象濾波。

cudaimgproc/,cuda-加速的影象處理演算法,包含直方圖計算、霍夫變換等。

cudaoptflow/,cuda-加速的光流檢測演算法。

cudastereo/,cuda-加速的立體視覺匹配演算法。

cudawarping/,實現了 cuda-加速的快速影象變換,包括透視變換、旋轉、改變尺寸等。

cudaev/,實現 cuda 版本的核心功能,類似 core/ 模組中的基礎演算法。

opencv模組介紹

opencv主要模組介紹 calib3d 其實就是就是calibration 校準 加3d這兩個詞的組合縮寫。這個模組主要是相機校準和三維重建相關的內容。基本的多視角幾何演算法,單個立體攝像頭標定,物體姿態估計,立體相似性演算法,3d資訊的重建等等。contrib 也就是contributed ex...

docker各模組介紹(筆記)

docker在最開始的時候,可以認為是乙個單體程式,docker客戶端 docker守護程序 顯像管理等功能都是放在同乙個程式中的,整個docker的安裝非常簡單,因為就乙個可執行檔案,在一定程度上也帶來的docker的飛速發展。隨著容器技術的興起,以及周邊軟體如mesos kubernetes等容...

Opencv模組功能介紹

歡迎關注我的部落格 和站在巨人的肩膀上才能看的更遠,而 opencv 就是乙個由 intel 公司發起的乙個計算機視覺和影象處理的巨人 開源的函式庫 在這裡我們可以很輕鬆的呼叫 opencv 為我們提供的 500多個 c c 函式,這些跨平台的函式具有強大的影象和矩陣處理的運算能力。如今 openc...