【opencv學習筆記二】opencv3.4.0組件結構說明


 

 在學習opencv使用之前我們先來看一下opencv有哪些組件結構。至於OpenCV組件結構的研究方法,

我們不妨管中窺豹,通過opencv安裝路徑下include目錄里面頭文件的分類存放,來一窺OpenCV這些年迅猛發展起來的龐雜組件架構。我們進入到D:\ProgramFiles\opencv340\opencv\build\include目錄,可以看到有opencv和opencv2這兩個文件夾。顯然,opencv這個文件夾里面包含着舊版的頭文件。而opencv2這個文件夾里面包含着具有時代意義的新版OpenCV2系列的頭文件。

 

 在opencv這個文件夾里面,也就是D:\Program Files\opencv340\opencv\build\include\opencv目錄下,可以看到如下的各種頭文件。這里面大概就是opencv 1.0最核心的,而且保留下來的內容的頭文件,可以把它們整體理解為一個組件。

 

 再來看看我們重點關注的opencv2這邊,在D:\ProgramFiles\opencv340\opencv\build\include\opencv2目錄下,我們可以看到這些文件夾:

 

 

 我們靈機一動,發現下面有個叫opencv_modules.hpp的hpp文件,一看就知道里面存放的是opencv2中的新模塊構造相關的說明代碼,打開一看,果不其然,定義的是OpenCV2所有組件的宏:

/*
 *      ** File generated automatically, do not modify **
 *
 * This file defines the list of modules available in current build configuration
 *
 *
*/

// This definition means that OpenCV is built with enabled non-free code.
// For example, patented algorithms for non-profit/non-commercial use only.
/* #undef OPENCV_ENABLE_NONFREE */

#define HAVE_OPENCV_CALIB3D
#define HAVE_OPENCV_CORE
#define HAVE_OPENCV_DNN
#define HAVE_OPENCV_FEATURES2D
#define HAVE_OPENCV_FLANN
#define HAVE_OPENCV_HIGHGUI
#define HAVE_OPENCV_IMGCODECS
#define HAVE_OPENCV_IMGPROC
#define HAVE_OPENCV_ML
#define HAVE_OPENCV_OBJDETECT
#define HAVE_OPENCV_PHOTO
#define HAVE_OPENCV_SHAPE
#define HAVE_OPENCV_STITCHING
#define HAVE_OPENCV_SUPERRES
#define HAVE_OPENCV_VIDEO
#define HAVE_OPENCV_VIDEOIO
#define HAVE_OPENCV_VIDEOSTAB
#define HAVE_OPENCV_WORLD

 

OK,就不多客套了,下面就是OpenCV的所有模塊介紹,按照順序來:

 

【calib3d】——其實就是就是Calibration(校准)加3D這兩個詞的組合縮寫。這個模塊主要是相機校准和三維重建相關的內容。基本的多視角幾何算法,單個立體攝像頭標定,物體姿態估計,立體相似性算法,3D信息的重建等等。

 

【core】——核心功能模塊,包含如下內容:

  •  OpenCV基本數據結構

  •  動態數據結構

  •  繪圖函數

  •  數組操作相關函數

  •  輔助功能與系統函數和宏

  •  與OpenGL的互操作

【dnn】——是指深度神經網算法, 此模塊包含:

  • 用於新層創建的API,層是神經網絡的積木;

  • 一組內置的最有用的層;

  • API構建並修改層的綜合神經網絡;

  • 從不同的框架加載序列化網絡模型的功能。

【features2d】 ——也就是Features2D, 2D功能框架 ,包含如下內容:

  • 特征檢測和描述

  • 特征檢測器(FeatureDetectors)通用接口

  • 描述符提取器(DescriptorExtractors)通用接口

  • 描述符匹配器(DescriptorMatchers)通用接口

  • 通用描述符(GenericDescriptor)匹配器通用接口

  • 關鍵點繪制函數和匹配功能繪制函數

【flann】—— Fast Library for ApproximateNearest Neighbors,高維的近似近鄰快速搜索算法庫,包含兩個部分:

  • 快速近似最近鄰搜索

  • 聚類

【highgui】——也就是high gui,高層GUI圖形用戶界面,包含媒體的I / O輸入輸出,視頻捕捉、圖像和視頻的編碼解碼、圖形交互界面的接口等內容

 

【imgcodecs】——圖像編解碼器。讀取圖像保存圖像等都放在這個文件下。

 

【imgproc】——Image和Processing這兩個單詞的縮寫組合。圖像處理模塊,這個模塊包含了如下內容:

  • 線性和非線性的圖像濾波

  • 圖像的幾何變換

  • 其它(Miscellaneous)圖像轉換

  • 直方圖相關

  • 結構分析和形狀描述

  • 運動分析和對象跟蹤

  • 特征檢測

  • 目標檢測等內容

【ml】——MachineLearning,機器學習模塊, 基本上是統計模型和分類算法,包含如下內容:

  • 統計模型 (StatisticalModels)

  • 一般貝葉斯分類器 (Normal Bayes Classifier)

  • K-近鄰 (K-NearestNeighbors)

  • 支持向量機 (SupportVector Machines)

  • 決策樹 (DecisionTrees)

  • 提升(Boosting)

  • 梯度提高樹(GradientBoosted Trees)

  • 隨機樹 (RandomTrees)

  • 超隨機樹 (Extremelyrandomized trees)

  • 期望最大化 (ExpectationMaximization)

  • 神經網絡 (NeuralNetworks)

  • MLData

objdetect】——目標檢測模塊,包含CascadeClassification(級聯分類)和Latent SVM這兩個部分。

 

【photo】——也就是Computational Photography,包含圖像修復和圖像去噪兩部分

 

【shape】——形狀的匹配以及距離。

 

【stitching】——images stitching,圖像拼接模塊,包含如下部分:

  • 拼接流水線

  • 特點尋找和匹配圖像

  • 估計旋轉

  • 自動校准

  • 圖片歪斜

  • 接縫估測

  • 曝光補償

  • 圖片混合

【superres】——SuperResolution,超分辨率技術的相關功能模塊

 

【video】——視頻分析組件,該模塊包括運動估計,背景分離,對象跟蹤等視頻處理相關內容。

 

【Videostab】——Videostabilization,視頻穩定相關的組件,官方文檔中沒有多作介紹,不管它了。

 

【world】——這是Opencv3特有的,把所有東西打包在一個dll里,配置環境的時候很方便,具體工程實際就要分情況了。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM