程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 【OpenCV入門教程之二】 一覽眾山小:OpenCV 2.4.8 or OpenCV 2.4.9組件結構全解析(轉),opencv2.4.9

【OpenCV入門教程之二】 一覽眾山小:OpenCV 2.4.8 or OpenCV 2.4.9組件結構全解析(轉),opencv2.4.9

編輯:關於PHP編程

【OpenCV入門教程之二】 一覽眾山小:OpenCV 2.4.8 or OpenCV 2.4.9組件結構全解析(轉),opencv2.4.9


本系列文章由zhmxy555(毛星雲)編寫,轉載請注明出處。  

文章鏈接: http://blog.csdn.net/poem_qianmo/article/details/19925819

 

作者:毛星雲(淺墨)    郵箱: [email protected] 

寫作當前博文時配套使用OpenCV版本:2.4.8

 

 

 

 

之前啃了不少OpenCV的官方文檔,發現如果了解了一些OpenCV整體的模塊架構後,再重點學習自己感興趣的部分的話,就會有一覽眾山小的感覺,於是,就決定寫出這篇文章,作為啟程OpenCV系列博文的第二篇。

 

至於OpenCV組件結構的研究方法,我們不妨管中窺豹,通過opencv安裝路徑下include目錄裡面頭文件的分類存放,來一窺OpenCV這些年迅猛發展起來的龐雜組件架構。

我們進入到D:\ProgramFiles\opencv\build\include目錄,可以看到有opencv和opencv2這兩個文件夾。顯然,opencv這個文件夾裡面包含著舊版的頭文件。而opencv2這個文件夾裡面包含著具有時代意義的新版OpenCV2系列的頭文件。

 

 

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

 

 

 

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

 

 

 

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

 

[cpp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片  
  1. /* 
  2.  *     ** File generated automatically, do not modify ** 
  3.  * 
  4.  *This file defines the list of modules available in current build configuration 
  5.  * 
  6.  * 
  7. */  
  8.    
  9. #define HAVE_OPENCV_CALIB3D  
  10. #define HAVE_OPENCV_CONTRIB  
  11. #define HAVE_OPENCV_CORE  
  12. #define HAVE_OPENCV_FEATURES2D  
  13. #define HAVE_OPENCV_FLANN  
  14. #define HAVE_OPENCV_GPU  
  15. #define HAVE_OPENCV_HIGHGUI  
  16. #define HAVE_OPENCV_IMGPROC  
  17. #define HAVE_OPENCV_LEGACY  
  18. #define HAVE_OPENCV_ML  
  19. #define HAVE_OPENCV_NONFREE  
  20. #define HAVE_OPENCV_OBJDETECT  
  21. #define HAVE_OPENCV_OCL  
  22. #define HAVE_OPENCV_PHOTO  
  23. #define HAVE_OPENCV_STITCHING  
  24. #define HAVE_OPENCV_SUPERRES  
  25. #define HAVE_OPENCV_TS  
  26. #define HAVE_OPENCV_VIDEO  
  27. #define HAVE_OPENCV_VIDEOSTAB  

 

 

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

 

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

 

【contrib】——也就是Contributed/Experimental Stuf的縮寫, 該模塊包含了一些最近添加的不太穩定的可選功能,不用去多管。2.4.8裡的這個模塊有新型人臉識別,立體匹配,人工視網膜模型等技術。

 

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

 

 

  • OpenCV基本數據結構
  • 動態數據結構
  • 繪圖函數
  • 數組操作相關函數
  • 輔助功能與系統函數和宏
  • 與OpenGL的互操作

 

 

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

 

 

  • 線性和非線性的圖像濾波
  • 圖像的幾何變換
  • 其它(Miscellaneous)圖像轉換
  • 直方圖相關
  • 結構分析和形狀描述
  • 運動分析和對象跟蹤
  • 特征檢測
  • 目標檢測等內容

 

 

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

  • 特征檢測和描述
  • 特征檢測器(Feature Detectors)通用接口
  • 描述符提取器(Descriptor Extractors)通用接口
  • 描述符匹配器(Descriptor Matchers)通用接口
  • 通用描述符(Generic Descriptor)匹配器通用接口
  • 關鍵點繪制函數和匹配功能繪制函數

 

 

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

 

 

  • 快速近似最近鄰搜索
  • 聚類

 

 

 

【gpu】——運用GPU加速的計算機視覺模塊

 

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

 

【legacy】——一些已經廢棄的代碼庫,保留下來作為向下兼容,包含如下相關的內容: 

  • 運動分析
  • 期望最大化
  • 直方圖
  • 平面細分(C API)
  • 特征檢測和描述(Feature Detection and Description)
  • 描述符提取器(Descriptor Extractors)的通用接口
  • 通用描述符(Generic Descriptor Matchers)的常用接口
  • 匹配器

 

 

【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)
  • MLData

【nonfree】,也就是一些具有專利的算法模塊 ,包含特征檢測和GPU相關的內容。最好不要商用,可能會被告哦。

 

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

 

【ocl】——即OpenCL-accelerated Computer Vision,運用OpenCL加速的計算機視覺組件模塊

 

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

 

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

 

 

  • 拼接流水線
  • 特點尋找和匹配圖像
  • 估計旋轉
  • 自動校准
  • 圖片歪斜
  • 接縫估測
  • 曝光補償
  • 圖片混合

 

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

 

【ts】——opencv測試相關代碼,不用去管他

 

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

 

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

 

 

看到到這裡,相信大家已經對OpenCV的模塊架構設計有了一定的認識。

OpenCV其實就是這麼多模塊作為代碼容器組合起來的一個SDK而已,沒什麼稀奇的,對吧。

 

最後配張圖,養養眼:

 

 

好了,OpenCV的組件結構介紹大概就是這些。

下篇文章見 :)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved