opencv3.x 代碼結構

opencv3.x 代碼結構

OpenCV 3.x 與之前版本的不同
1)以C++ 風格API爲主,C 風格的API 最終可能會取消。
2)C++ API 更加簡潔,引入很多C++面向對象的特性
3) 算法都將繼承自 cv::Algorithm 接口。
4) 模塊分類細化,意義和功能明顯。

源代碼結構

1)3rdparty/,OpenCV 依賴的第三方庫,比如:ffmpeg,jpg、png、tiff等。

2)apps/,包含進行 haar 分類器訓練的工具,opencv 進行人臉檢測便是基於 haar 分類器。

3)cmake/,OpenCV工程編譯需要的cmake相關文件,用於智能搜索第三方庫。

4)include/,工程頭文件。其中,C 語言風格的API在opencv 子文件夾中 ,opencv2 子文件中有一個 opencv.hpp 文件, cv2.x和cv3.x推薦使用。

5)modules/,功能模塊核心代碼。

6)platforms/,交叉編譯所需的工具鏈及額外的代碼。

7)samples/,OpenCV的使用範例

8)data/, opencv 庫以及範例中用到的資源文件,例如人臉檢測的模型數據文件等。

9)doc/,編譯生成文檔所需文件及輔助腳本。

非GPU相關模塊

1)androidcamera/,android平臺相機設備相關接口。

2)core/,核心模塊,定義基本的數據結構,例如:Mat 類、XML 讀寫、opengl三維渲染等。

3)imgproc/,含圖像濾波、集合圖像變換、直方圖計算、形狀描述子等功能。

4)imgcodec/,各種格式的圖片的讀寫。

5)highgui/,高級圖形界面及與 QT 框架的整合。

6)video/,視頻分析相關模塊。包括背景提取、光流跟蹤、卡爾曼濾波等。

7)videoio/,視頻文件讀寫讀寫相關,包含攝像頭、Kinect 等的輸入。

8)calib3d/,相機標定及三維重建相關。相機標定用於消除廣角相機畫面畸變。三維重建,例如,在雙目視覺(立體視覺)中,基於兩個標定的攝像頭觀察同一個場景,計算兩幅畫面中的相關性來估算像素的深度。

9)features2d/, 2D 特徵值檢測的框架。包含各種特徵值檢測器及描述子,例如 FAST、MSER、OBRB、BRISK等。各類特徵值擁有統一的算法接口,因此在不影響程序邏輯的情況下可以進行替換。

10)objdetect/,物體檢測模塊。包括haar分類器、SVM檢測器及文字檢測。

11) ml/,機器學習相關。包括統計模型、K最近鄰、支持向量機、決策樹、神經網絡等經典的機器學習算法。

12)flann/,多維空間內聚類及搜索近似最近鄰的算法。

13)photo/,計算攝影學。包括圖像修補、去噪、HDR成像、非真實感渲染等。可實現類似Photoshop高級功能。

14)stitching/,圖像拼接,全景製作。

15)nonfree/,有專利的算法。如:SIFT和SURF。

16)shape/,形狀匹配相關模塊。用於描述形狀、比較形狀。

17)softcascade/,Soft Cascade 分類器物體檢測算法,含檢測和訓練模塊。

18)superres/,超分辨率相關,增強圖像的分辨率。

19)videostab/,視頻消除抖動相關,例如,用於解決相機移動時拍攝的視頻不穩定問題。

20)viz/,三維可視化模塊。一個簡單的三維可視化引擎,有各種UI控件和鍵盤、鼠標交互方式,底層實現基於 VTK 庫。

GPU相關模塊

模塊的名稱以 cuda 爲開始,cuda 是顯卡製造商 NVIDIA 推出的通用計算語言,cv3中有大量的模塊已基於cuda實現。

1)cuda/,CUDA-加速的計算機視覺算法,包括數據結構 cuda::GpuMat、 基於cuda的相機標定及三維重建等。

2)cudaarithm/,CUDA-加速的矩陣運算模塊。

3)cudabgsegm/,CUDA-加速的背景分割模塊,通常用於視頻監控。

4)cudacodec/,CUDA-加速的視頻編碼與解碼。

5)cudafeatures2d/,CUDA-加速的特徵檢測與描述模塊,與features2d/模塊功能類似。

6)cudafilters/,CUDA-加速的圖像濾波。

7)cudaimgproc/,CUDA-加速的圖像處理算法,包含直方圖計算、霍夫變換等。

8)cudaoptflow/,CUDA-加速的光流檢測算法。

9)cudastereo/,CUDA-加速的立體視覺匹配算法。

10)cudawarping/,實現了 CUDA-加速的快速圖像變換,包括透視變換、旋轉、改變尺寸等。

11)cudaev/,實現 CUDA 版本的核心功能,類似 core/ 模塊中的基礎算法。

opencv4.0alpha最新消息

opencv4.0alpha即將發佈,在4.0alpha版本中增加了對神經網絡的更多支持,增加了二維碼的檢測與解碼的完整方案,增加了對SSE-4,AVX2和NEON的優化,此外4.0alpha版採用c++11,編譯器需要能夠支持c++11才行,循環可以採用parallel_for等lambda函數,parallel_for可以使用std::threads後端作爲並行計算方案。在4.0gold版本將全面刪除對opencv1.x中的c接口的支持。

參考文獻
1)http://blog.csdn.net/zkl99999/article/details/48676487
2)https://docs.opencv.org/4.0.0-alpha/
3)https://opencv.org/opencv-4-0-0-alpha.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章