OpenCV基本架構[OpenCV 筆記0],opencv架構筆記0
最近正在系統學習OpenCV,將不定期發布筆記,主要按照毛星雲的《OpenCV3編程入門》的順序學習,會參考官方教程和文檔。學習工具是Xcode+CMake,會對書中一部分內容更正,並加入cmakelist的內容。
書中大部分內容來自OpenCV文檔,其實比較推薦官方文檔和教程
OpenCV2.4.13: http://docs.opencv.org/2.4/index.html
OpenCV安裝路徑下的include文件夾包含opencv和opencv2兩個文件夾。opencv文件夾包含OpenCV1的頭文件,opencv2文件夾包含OpenCV2的頭文件。
OpenCV2模塊
opencv_modules.hpp裡面存放了OpenCV2所有組件的宏。按照宏定義介紹如下:
- [calib3d] Camera Caliberation + 3D Reconstruction;
- [contrib] Contributed/Experimental Stuff, 最新添加的不太穩定的功能,新增了新型人臉識別、立體匹配、人工視網膜模型等;
- [core] core functions, 包括OpenCV基本數據結構、繪圖函數、數組操作函數、系統函數和宏、OpenGL的互操作;
- [imgproc] Image Processing, 包括圖像濾波、圖像集合變換、直方圖、結構分析和形狀描述、運動分析和對象跟蹤、特征檢測、目標檢測;
- [features2d] 2D Features, 特征檢測和通用接口,關鍵點繪制函數和匹配功能繪制函數;
- [flann] Fast Library for Approximate Nearest Neighbors, 快速近似最近鄰搜索,聚類;
- [gpu] GPU Acceleration;
- [highhui] Graphical User Interface, 媒體輸入輸出、視頻捕捉、圖像和視頻的編碼解碼、圖形交互界面接口;
- [legacy] 廢棄代碼,為了向下兼容
- [ml] Machine Learning: Statical Model, Normal Bayes Classifier, K-Nearest Neighbors, Support Vector Machines, Decision Trees, Boosting, Gradient Boosted Trees, Random Trees, Extremely randomized trees, Expectation Maximization, Neural Networks, MLData;
- [nonfree] 具有專利的算法模塊,包括特征檢測和GPU相關,不能商用;
- [objdetect] object detection: Cascade Classification, Latent SVM;
- [ocl] OpenCL-accelerated Computer Vision;
- [photo] Computational Photography, 圖像修復和去噪;
- [stitching] image stitching, 圖像拼接包括:拼接流水線,特點尋找和匹配圖像、估計旋轉、自動校准、圖片歪斜、接縫估測、曝光補償、圖片混合;、
- [superres] Supper Resolution;
- [ts] OpenCV test code;
- [vedio] 視頻分析組件,包括運動估計、背景分離、對象跟蹤等;
- [Vediostab] Video Stabilization.
OpenCV3的改變
OpenCV3目的是為OpenCV減重,能夠選擇性的去掉一些臃腫的功能模塊,拋棄了整體架構使用內核+插件的結構形式。在Github中,存放著正式版的OpenCV,還有opencv_contrib和opencv_extra
- opencv: https://github.com/itseez/opencv
- opencv_contrib: https://github.com/itseez/opencv_contrib
- opencv_extra: https://github.com/itseez/opencv_extra
- opencv_contrib是實驗代碼存放的位置,其中包括:臉部識別和文本探測、新的邊緣檢測器、圖像修復、深度地圖處理、新的流光和追蹤算法等。安裝方法為,在CMake中用
opencv_extra_modules_path=/modules
將模塊的地址傳遞給主代碼,並一起編譯。