打開opencv2.4.8裏面的include文件夾,出現兩個文件夾爲別爲:opencv,opencv2。接下來我們來看其特點:
1.首先看opencv文件夾裏面的文件分佈:
cv.h源碼如下:
cv.hpp文件源碼如下:
從而看出,cv.hpp是包含cv.h文件的,
在opencv 文件夾裏的所有文件都是類似的,均是包含opencv2文件夾裏的頭文件,所以我們如果是從低版本的opencv學習過渡到高版本的opencv的話,如果不適應可以先以opencv文件夾裏的文件調用爲標準。如果熟悉opencv裏的函數分佈,也可以直接調用opencv2文件夾裏的具體頭文件,這樣在頭文件預編譯提高效率。
2.接下來看opencv文件夾裏面的文件分佈:
看這些文件分佈,首先來看兩個文件:
opencv.hpp文件:
我們可以看到,調用opencv庫時,可以頭文件寫成:
1.
#include <opencv2/opencv.hpp>
opencv _modules文件:
對於這個解釋如下:
【calib3d】 ——其實就是就是Calibration(校準)加3D這兩個詞的組合縮寫。這個模塊主要是相機校準和三維重建相關的內容。基本的多視角幾何算法,單個立體攝像頭標定,物體姿態估計,立體相似性算法,3D信息的重建等等。
【contrib】 ——也就是Contributed/Experimental Stuf的縮寫, 該模塊包含了一些最近添加的不太穩定的可選功能,不用去多管。2.4.8裏的這個模塊有新型人臉識別, 立體匹配 ,人工視網膜模型等技術。
【core】 ——核心功能模塊,包含如下內容:
- OpenCV基本數據結構
- 動態數據結構
- 繪圖函數
- 數組操作相關函數
- 輔助功能與系統函數和宏
- 與OpenGL的互操作
【imgproc 】 ——Image和Processing這兩個單詞的縮寫組合。圖像處理模塊,這個模塊包含了如下內容:
- 線性和非線性的圖像濾波
- 圖像的幾何變換
- 其它(Miscellaneous)圖像轉換
- 直方圖相關
- 結構分析和形狀描述
- 運動分析和對象跟蹤
- 特徵檢測
- 目標檢測等內容
【features2d】 ——也就是Features2D, 2D功能框架 ,包含如下內容:
- 特徵檢測和描述
- 特徵檢測器(Feature Detectors)通用接口
- 描述符提取器(Descriptor Extractors)通用接口
- 描述符匹配器(Descriptor Matchers)通用接口
- 通用描述符(Generic Descriptor)匹配器通用接口
- 關鍵點繪製函數和匹配功能繪製函數
【flann】 —— Fast Library for Approximate Nearest Neighbors,高維的近似近鄰快速搜索算法庫, 包含兩個部分:
- 快速近似最近鄰搜索
- 聚類
【gpu】 ——運用GPU加速的計算機視覺模塊
【highgui】 ——也就是high gui,高層GUI圖形用戶界面,包含媒體的I / O輸入輸出, 視頻捕捉、圖像和視頻的編碼解碼、圖形交互界面的接口等內容
【legacy】 ——一些已經廢棄的代碼庫,保留下來作爲向下兼容,包含如下相關的內容:
- 運動分析
- 期望最大化
- 直方圖
- 平面細分(C API)
- 特徵檢測和描述(Feature Detection and Description)
- 描述符提取器(Descriptor Extractors)的通用接口
- 通用描述符(Generic Descriptor Matchers)的常用接口
- 匹配器
【ml】 ——Machine Learning,機器學習模塊, 基本上是統計模型和分類算法,包含如下內容:
- 統計模型 (Statistical Models)
- 一般貝葉斯分類器 (Normal Bayes Classifier)
- K-近鄰 (K-NearestNeighbors)
- 支持向量機 (Support Vector Machines)
- 決策樹 (Decision Trees)
- 提升(Boosting)
- 梯度提高樹(Gradient Boosted Trees)
- 隨機樹 (Random Trees)
- 超隨機樹 (Extremely randomized trees)
- 期望最大化 (Expectation Maximization)
- 神經網絡 (Neural Networks)
- MLData
【nonfree】 ,也就是一些具有專利的算法模塊 ,包含特徵檢測和GPU相關的內容。最好不要商用,可能會被告哦。
【objdetect】 ——目標檢測模塊,包含Cascade Classification(級聯分類)和Latent SVM這兩個部分。
【ocl】 ——即OpenCL-accelerated Computer Vision,運用OpenCL加速的計算機視覺組件模塊
【photo】 ——也就是Computational Photography,包含圖像修復和圖像去噪兩部分
【stitching】 ——images stitching,圖像拼接模塊,包含如下部分:
- 拼接流水線
- 特點尋找和匹配圖像
- 估計旋轉
- 自動校準
- 圖片歪斜
- 接縫估測
- 曝光補償
- 圖片混合
完成兩個文件的解釋,接下來開始一個子文件夾的分析就結束我們的博客吧。
【superres】 ——SuperResolution,超分辨率技術的相關功能模塊
【ts】 ——opencv測試相關代碼,不用去管他
【video】 ——視頻分析組件
該模塊包括運動估計,背景分離,對象跟蹤等視頻處理相關內容
【Videostab】 ——Video stabilization,視頻穩定相關的組件
開始我們熟悉的highgui文件夾裏的文件分析:
首先看ios文件:
其包含cap_ios.h文件,其爲:
在此兩個文件的包含關係就清楚了。
highgui.hpp文件:
其包含highgui_c.h文件。
至此告一段落,對於opencv的頭文件包含問題都可以依次來解決。