OpenCV編程頭文件分析

打開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庫所有頭文件。

 

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的頭文件包含問題都可以依次來解決。

發佈了32 篇原創文章 · 獲贊 11 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章