在學習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信息的重建等等。dom
【core】——核心功能模塊,包含以下內容:機器學習
OpenCV基本數據結構ide
動態數據結構函數
繪圖函數
數組操做相關函數
輔助功能與系統函數和宏
與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裏,配置環境的時候很方便,具體工程實際就要分狀況了。