點擊下方卡片,關注「新機器視覺」公眾號
重磅乾貨,第一時間送達
各位撇學生,好久不見,我是小劉老師。
今天我們來聊聊OpenCV。(Open Source Computer Vision Library)開源計算機視覺庫的組成。
OpenCV是由很多模塊組成的,這些模塊可以分成很多層:
最底層是基於硬件加速層(HAL)的各種硬件優化。
再上一層是 opencv_contrib 模塊所包含的 OpenCV 由其他開發人員所貢獻的代碼,其包含大多數高層級的函數功能。這就是OpenCV的核心。
接下來是語言綁定和示例應用程序。
處於最上層的是 OpenCV 和操作系統的交互。

首先劉老師在這裡先說一下,在win平台裝在的exe或者python中pip下載的OpenCV都是只安裝的標準模塊。
按照的標準的OpenCV 4.1的文件夾所示,在「...\opencv\build\include」文件夾中只有一個名為opencv2的文件夾。這裡需要再次重點說明,在OpenCV 4之前的版本中,該文件夾下有opencv和opencv2兩個文件夾,而在OpenCV4中將兩者整合成opencv2一個文件夾。打開opencv2文件夾就可以看到OpenCV4.1的模塊架構。
看到紅色方框的標註了嗎?(C++中的編譯的頭文件都是.h/.cpp;.hpp本質就是將.cpp的實現代碼混入.h頭文件當中,定義與實現都包含在同一文件,則該類的調用者只需要include該.hpp文件即可,無需再將cpp加入到project中進行編譯)

今天我們來介紹一下標準模板裡面的內容:
【core】——核心功能模塊,模塊主要包含 OpenCV 庫的基礎結構以及基本操作。
OpenCV基本數據結構
動態數據結構
繪圖函數
數組操作相關函數
輔助功能與系統函數和宏
與OpenGL的互操作
【calib3d】——這個模塊名稱是由calibration(校準)和3D這兩個單詞的縮寫組合而成。包含的主要內容為:
相機標定和三維重建。
基本的多視角幾何算法,單個立體攝像頭標定,物體姿態估計,立體相似性算法,3D信息的重建等
相機標定用於取出相機自身缺陷導致的畫面形變,還原真實的場景,確保計算的準確性。
三維重建通常用在雙目視覺(立體視覺),即兩個標定後的攝像頭觀察同一個場景,通過計算兩幅畫面中的相關性來估計像素深度。
【imgproc】——這個模塊名稱是由image(圖像)和process(處理)兩個單詞的縮寫組和而成,是重要的圖像處理模塊。
線性和非線性的圖像濾波
圖像的幾何變換
其它(Miscellaneous)圖像轉換
直方圖相關
結構分析和形狀描述
運動分析和對象跟蹤
特徵檢測
目標檢測等內容
【imgcodecs】——圖像文件讀取與保存模塊,主要用於圖像文件讀取與保存。
【features2d】——這個模塊名稱是由features(特徵)和2D這兩個單詞的縮寫組合而成,其功能主要為處理圖像特徵點,例如特徵檢測、描述與匹配等。
特徵檢測器(Feature Detectors)通用接口
描述符提取器(Descriptor Extractors)通用接口
描述符匹配器(Descriptor Matchers)通用接口
通用描述符(Generic Descriptor)匹配器通用接口
關鍵點繪製函數和匹配功能繪製函數
【dnn】——深度學習模塊,這個模塊是OpenCV 4版本的一個特色,其主要包括構建神經網絡、加載序列化網絡模型等。
看看這個例子:用OpenCV的dnn模塊調用yolov3模型
【flann】——這個模塊名稱是Fast Library for Approximate Nearest Neighbors(快速近似最近鄰庫)的縮寫
快速近似最近鄰搜索
聚類,用於在多維空間內聚類及搜索的近似算法
【Highgui】——這個模塊包含可以用來顯示圖像或者簡單的輸入的用戶交互函數。這可以看作是一個非常輕量級的 Windows UI 工具包。
媒體的I/O輸入輸出,
視頻捕捉、
圖像和視頻的編碼解碼、
圖形交互界面的接口
統計模型 (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)
圖像修補
去噪
HDR 成像
非真實感渲染等
【stitching】——圖像拼接模塊,主要包含特徵點尋找與匹配圖像、估計旋轉、自動校準、接縫估計等圖像拼接過程的相關內容。
Features Finding and Images Matching 功能查找和圖像匹配
Rotation Estimation 輪換估計
Autocalibration 自動校準
Images Warping 圖像變形
Seam Estimation 接縫估計
Exposure Compensation 曝光補償
Image Blenders 圖像攪拌機
【video】——視頻分析模塊,主要包含運動估計、背景分離、對象跟蹤等視頻處理相關內容。
【videoio】——視頻輸入輸出模塊,主要用於讀取與寫入視頻或者圖像序列。
【gapi】——這個模塊是OpenCV 4.0中新增加的模塊,旨在加速常規的圖像處理,與其他模塊相比,這個模塊主要充當框架而不是某些特定的計算機視覺算法。OpenCV的Graph API(或稱G-API)是一個讓常規圖像處理變得更快(fast)和輕量(portable)的新模塊。這兩種方式的是通過引入一個新的基於圖像的執行模型實現的(graph-based model of execution)。G-API是一個特殊的OpenCV模塊。和其它大多數的主要模塊(OpenCV本體模塊)不同的是,此模塊扮演的角色是一個框架,而不是某種特別的CV算法。G-API提供了定義CV操作的方式,用以構圖(以一種表達的方式),最終通過特定的後端(backend)來生效和執行操作
本文僅做學術分享,如有侵權,請聯繫刪文。
