OpenCV庫框架結構

2021-09-24 18:11:33 字數 2235 閱讀 8953

在上文已經學習過了opencv的編碼規則,為了能夠方便靈活的運用opecv庫,我們需要對其框架結構進行學習了解,以方便我們進行實際工程呼叫呼叫。

開啟opencv原始碼安裝的資料夾e:\opencv\opencv

可以看到上述檔案,很明顯,opencv解壓後,提供給我們乙個編譯環境及工程的原始碼環境以及使用的license。

開啟build資料夾,可以看到如下檔案:

其他的資料夾都是一些編譯工具檔案及相容檔案,這裡重點需要關注的是include資料夾,其內包含的就是庫檔案包含的模組檔案,進入到include檔案,可以看到兩個資料夾,如下所示:

這裡的opencv包含的是c介面,opencv2包含的是c++介面。

進入到opencv,可以看到如下檔案,

這裡c介面下的模組功能說明如下:

進入opencv2可以看到其下又有如下檔案:

這裡對c++介面呼叫的模組進行說明:

開啟opencv下的source資料夾,可以看到如下檔案:

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

samples/,範例資料夾,包含大量學習案例。

進入modules資料夾可以看到其下包含如下資料夾:

與build下的include相比,這裡原始碼多了:

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

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

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

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

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

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

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

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

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

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

springboot框架結構

dispatch2dao.xml templates.view 自定義包名 分類包名 html 頁面檔案 自定義 form 可用作 增 改 自定義 list 可用作 展示 自定義 view 可用作 檢視 base basecontroller 定義controller基類 base basedao ...

metasploit框架結構

輔助模組 aux 滲透攻擊模組 exploit 後攻擊模組 post 攻擊載荷模組 payloads 空指令模組 nops 編碼模組 encoders 規避 免殺 模組 evasion 載入其他模組 整合現有的一些外部安全工具 如nessus openvas漏洞掃瞄器等,為使用者介面提供一些新的功能...

Foundation框架 結構體

foundation框架 結構體 一 基本知識 foundation 基礎框架。框架中包含了很多開發中常用的資料型別,如結構體,列舉,類等,是其他ios框架的基礎。如果要想使用foundation框架中的資料型別,那麼包含它的主標頭檔案就可以了。即 import 補充 core foundation...