OpenCV 3 x 原始碼結構簡介

2021-08-20 15:10:59 字數 2050 閱讀 8990

opencv 3.x 與之前版本的不同

1)以c++ 風格api為主,c 風格的api 最終可能會取消。

2)c++ api 更加簡潔,引入很多c++物件導向的特性

3) 演算法都將繼承自 cv::algorithm 介面。

4) 模組分類細化,意義和功能明顯。

源**結構

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

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/,編譯生成文件所需檔案及輔助指令碼。

1)androidcamera/,android平台相機裝置相關介面。

2)core/,核心模組,定義基本的資料結構,例如:mat 類、xml 讀寫、opengl三維渲染等。

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

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

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

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/,超解析度相關,增強影象的解析度。

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

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

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

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

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

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

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

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

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

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

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

參考文獻

1)2)opencv online doc

OpenCV 3 X 基礎講解

opencv是乙個開源的計算機視覺庫,它由c 語言進行編寫並進行了深度優化。opencv起源於英特爾想要增強cpu集群效能的研究,以下是opencv要完成的一些目標 從opencv3.0開始,英特爾許可opencv研發團隊以及opencv社群擁有乙個免費的ipp庫的子庫 ippcv 該字型檔預設整合...

BusyBox原始碼結構簡介

1 介紹busybox稱作是嵌入式開發的瑞士軍刀,實用,短小,穩定。l busybox利用linux實用工具中 大量重複的事實,將重複的 重新整理,放到乙個檔案中,減少了多次包含。l busybox通過簡化非必要的複雜功能,減少占用的空間。l busybox的完全可定製性,提供了非常靈活,宜於擴充套...

原始碼安裝Py3 x (4)

注意 wget 5 python 3.6 解包 tar xvf python 3.6 5.tgz 解包得到python 3.6.5資料夾執行configure cd python 3.6.5 進入到該目錄下.configure prefix usr local python3.6 是執行的意思,執行...