OpenCV 3 最新模組一次看個夠

2021-09-30 13:12:53 字數 2515 閱讀 9881

· 6 個月前

opencv 3 就要正式發布了,但是很多讀者還在用 opencv 2,甚至 opencv 1。你們一定想知道,是否有必要公升級到 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/,包含交叉編譯所需的工具鏈以及額外的**,交叉編譯指的是在乙個作業系統中編譯供另乙個系統使用的檔案。

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 為開始,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 起到幫助,還有一些內容將在之後的文章中介紹,比如 samples 介紹,opencv_contrib 模組是什麼等等。

OpenCV 3 最新模組一次看個夠

vinjn張靜 3 年前 本文原版是譯作 opencv 2 計算機視覺程式設計手冊 的附錄,經過刪減後在專欄中刊登。opencv 3 就要正式發布了,但是很多讀者還在用 opencv 2,甚至 opencv 1。你們一定想知道,是否有必要公升級到 3,以及如何提前進行準備。cmake 包含生成工程專...

OpenCV 3 最新模組一次看個夠

opencv 3 就要正式發布了,但是很多讀者還在用 opencv 2,甚至 opencv 1。你們一定想知道,是否有必要公升級到 3,以及如何提前進行準備。cmake 包含生成工程專案時 cmake 的依賴檔案,用於智慧型搜尋第三方庫,普通開發者不需要關心這個資料夾的內容。data 包含 open...

OpenCv3程式設計學習一

之前學習的時候有裝過opencv,版本是3.4.而對應的visual studio是2017版本。所以直接開始建立了控制台專案,命名為2020.620.放在了d盤的vs opencvdemo 配置是vc15 大部分參考自 需要注意的是 首先關於的路徑名,可以是相對路徑,也就是存放在當前目錄下 也就是...