close

點擊下方卡片,關注「新機器視覺」公眾號

重磅乾貨,第一時間送達


各位撇學生,好久不見,我是小劉老師。

今天我們來聊聊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的互操作

#include "opencv2/core/core_c.h"#include "opencv2/core/core.hpp"

【calib3d】——這個模塊名稱是由calibration(校準)和3D這兩個單詞的縮寫組合而成。包含的主要內容為:

相機標定和三維重建。

基本的多視角幾何算法,單個立體攝像頭標定,物體姿態估計,立體相似性算法,3D信息的重建等

相機標定用於取出相機自身缺陷導致的畫面形變,還原真實的場景,確保計算的準確性。

三維重建通常用在雙目視覺(立體視覺),即兩個標定後的攝像頭觀察同一個場景,通過計算兩幅畫面中的相關性來估計像素深度。

#include "opencv2/calib3d/calib3d.hpp"

【imgproc】——這個模塊名稱是由image(圖像)和process(處理)兩個單詞的縮寫組和而成,是重要的圖像處理模塊。

線性和非線性的圖像濾波

圖像的幾何變換

其它(Miscellaneous)圖像轉換

直方圖相關

結構分析和形狀描述

運動分析和對象跟蹤

特徵檢測

目標檢測等內容

#include "opencv2/imgproc/imgproc_c.h"#include "opencv2/imgproc/imgproc.hpp"

【imgcodecs】——圖像文件讀取與保存模塊,主要用於圖像文件讀取與保存。

#include"opencv2/imgcodecs/imgcodecs.hpp"

【features2d】——這個模塊名稱是由features(特徵)和2D這兩個單詞的縮寫組合而成,其功能主要為處理圖像特徵點,例如特徵檢測、描述與匹配等。

特徵檢測器(Feature Detectors)通用接口

描述符提取器(Descriptor Extractors)通用接口

描述符匹配器(Descriptor Matchers)通用接口

通用描述符(Generic Descriptor)匹配器通用接口

關鍵點繪製函數和匹配功能繪製函數

#include "opencv2/features2d/features2d.hpp"

【dnn】——深度學習模塊,這個模塊是OpenCV 4版本的一個特色,其主要包括構建神經網絡、加載序列化網絡模型等。

看看這個例子:用OpenCV的dnn模塊調用yolov3模型

https://zhuanlan.zhihu.com/p/135356269
#include <opencv2/dnn.hpp>

【flann】——這個模塊名稱是Fast Library for Approximate Nearest Neighbors(快速近似最近鄰庫)的縮寫

快速近似最近鄰搜索

聚類,用於在多維空間內聚類及搜索的近似算法

#include "opencv2/flann/flann.hpp"

【Highgui】——這個模塊包含可以用來顯示圖像或者簡單的輸入的用戶交互函數。這可以看作是一個非常輕量級的 Windows UI 工具包。

媒體的I/O輸入輸出,

視頻捕捉、

圖像和視頻的編碼解碼、

圖形交互界面的接口

#include "opencv2/highgui/highgui_c.h"#include "opencv2/highgui/highgui.hpp"
【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)

#include "opencv2/ml/ml.hpp"
【photo】——計算攝影模塊,主要包含圖像修復和去噪等。

圖像修補

去噪

HDR 成像

非真實感渲染等

#include "opencv2/photo/photo.hpp"

【stitching】——圖像拼接模塊,主要包含特徵點尋找與匹配圖像、估計旋轉、自動校準、接縫估計等圖像拼接過程的相關內容。

Features Finding and Images Matching 功能查找和圖像匹配

Rotation Estimation 輪換估計

Autocalibration 自動校準

Images Warping 圖像變形

Seam Estimation 接縫估計

Exposure Compensation 曝光補償

Image Blenders 圖像攪拌機

#include "opencv2/stitching.hpp"#include "opencv2/stitching/detail/autocalib.hpp"#include "opencv2/stitching/detail/blenders.hpp"#include "opencv2/stitching/detail/timelapsers.hpp"#include "opencv2/stitching/detail/camera.hpp"#include "opencv2/stitching/detail/exposure_compensate.hpp"#include "opencv2/stitching/detail/matchers.hpp"#include "opencv2/stitching/detail/motion_estimators.hpp"#include "opencv2/stitching/detail/seam_finders.hpp"#include "opencv2/stitching/detail/util.hpp"#include"opencv2/stitching/detail/warpers.hpp"

【video】——視頻分析模塊,主要包含運動估計、背景分離、對象跟蹤等視頻處理相關內容。

#include "opencv2/video/video.hpp"

【videoio】——視頻輸入輸出模塊,主要用於讀取與寫入視頻或者圖像序列。

#include "opencv2/videoio/videoio.hpp"

【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)來生效和執行操作

#include <opencv2/gapi.hpp>#include <opencv2/gapi/core.hpp>#include <opencv2/gapi/imgproc.hpp

本文僅做學術分享,如有侵權,請聯繫刪文。

—THE END—
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()