圖像處理技術通常包括圖像壓縮,加強和復原,匹配 描述和l識別 3 個部分。 圖像處理通常指數字圖像處理 ( Digitallmage Processing)。 其中,數字圖像是指用工業相機、攝像機、掃描儀等設備通過拍攝獲得的一個 大的二維數組。 該數組的元素稱爲像素,其值稱爲灰度值。而數字圖像處理是 經過計算機對圖像進行去除l噪聲、加強、復原、分割、提取特徵等處理的方法 和技術。
計算機視覺 (Computer Vision) 是一門研究如何使機器"看"的科學,具體 地說,就是是指用攝影機和電腦代替人眼對目標進行識別、跟蹤和測量等機器視 覺,並進一步作圖形處理,用電腦處理使之成爲更適合人眼觀察或傳送給儀器檢 測的圖像的-門學科。
圖像處理和計算機視覺的區別在於: 圖像處理側重於"處理"圖像-一如增 強,還原,去噪,分割,等等;而計算機視覺重點在於使用計算機(也許是可移 動式的)來模擬人的視覺,所以模擬纔是計算機視覺領域的最終目標。
OpenCV (Open Source Computer Vision Library),是一個基於開源發行的 跨平臺計算機視覺庫,它實現了圖像處理和 計算機視覺方面的不少通用算法,已 經成爲了計算機視覺領域最有力的研究工具之一。
opencv_modules.hpp存放的是 OpenCV2 中與新模塊構造相關的說明代碼git
( 1 ) 【calib3d】 -一-Ca1ibration (校準)和 3D 這兩個詞的組合縮寫。這個模塊主要是相機校準和三維重建相關的內容,包括基本的多視角幾何算法、單個立 體攝像頭標定、物體姿態估計、立體類似性算法、 3D 信息的重建等。算法
(2) 【 contrib】 一一Contributed/Experimental Stuf的縮寫。該模塊包含了一些 最近添加的不太穩定的可選功能, 不用去多管。 新增了新型人臉識別、立體匹配、 人工視網膜模型等技術 。數組
(3) 【core】 一一核心功能模塊,包含以下內容:
• OpenCV 基本數據結構
· 動態數據結構
· 繪圖函數
· 數組操做相關函數
· 輔助功能與系統函數和宏
. 與 OpenGL 的互操做網絡
(4) 【imgproc】 一 lmage 和 Process 這兩個單詞的縮寫組合,圖像處理模塊。 包含以下內容:
· 線性和l非線性的圖像濾波
. 圖像的幾何變換
· 其餘(Miscellaneolls) 圖像轉換
. 直方圖相關
· 結構分析和形狀描述
. 運動分析和對象跟蹤
. 特徵檢測
· 目標檢測等內容
( 5) 【features2d】 一一也就是 Features2D,即 2D 功能框架,包含以下內容:
. 特徵檢測和描述
. 特徵檢測器 (Feature Detectors) 通用接口
· 描述符提取器 (Descriptor Extractors) 通用接口
. 描述符匹配器 (Descriptor Matchers )通用接口
· 通用描述符 (Generic Descriptor) 匹配器通用接口
. 關鍵點繪製函數和匹配功能繪製函數數據結構
(6) 【flann】 一 Fast Library for Approximate Nearest Neighbors, 高維的近似, 近鄰快速搜索算法庫,包含如下兩個部分:
. 快速近似最近鄰搜索
. 聚類
( 7 ) 【gpu】 一一運用 GPU 加速的計算機視覺模塊。
( 8) 【highgui】 一-高層 GUI 圖形用戶界面,包含媒體的輸入輸出、視頻捕捉、圖像和視頻的編碼解碼、圖形交互界面的接口等內容。框架
(9) 【legacy】 一一 一些己經廢棄的代碼庫, 保留下來做爲向下兼容,包含如 下內容:
· 運動分析
· 指望最大化
. 直方圖
· 平面細分 (CAPI)
· 特徵檢測和描述 (Feature Detection and Description)
. 描述符提取器 ( Descriptor Extactors) 的通用接口
. 通用描述符(Generic Descriptor Matchers)的經常使用接口
. 匹配器dom
(10) 【 mJ】 一 Machine Learning,機器學習模塊,基本上是統計模型和分類 算法,包含以下內容:
· 統計模型 ( Statistical Models)
· 通常貝葉斯分類器 (Normal Bayes Classifier)
• K-近鄰 (K-Nearest Neighbors)
· 支持向量機( Support Vector Machines)
. 決策樹 (Decision Trees)
· 提高 (Boosting)
· 梯度提升樹 (Gradient Boosted Trees)
. 隨機樹 (Random Trees)
· 超隨機樹( Extremely randomized trees)
· 指望最大化 (Expectation Maximization)
· 神經網絡 (Neural Networks)
• MLData機器學習
(11) 【nonfree】 一一 一些具備專利的算法模塊,包含特徵檢測和 GPU 相關的 內容。最好不要商用 。
( 12) 【objdetect】 一一 目標檢測模塊, 包含 Cascade Classification (級聯分類) 和 Latent SVM 這兩個部分。
(13 ) 【ocl】 一 OpenCL-accelerated Computer Vision, 運用 OpenCL 加速的計算機視覺組件模塊。
( 14) 【photo】 一 Computational Photography, 包含圖像修復和圖像去噪兩部分
( 15 ) 【stitching】 一 images stitching,圖像拼接模塊,包含以下部分:
· 拼接流水線
· 特色尋找和匹配圖像
. 估計旋轉
· 自動校準
. 圖片歪斜·
· 接縫估測
. 曝光補償
· 圖片混合
( 16 ) 【superres】 一 SuperResolution,超分辨率技術的相關功能模塊。ide
(17) 【ts】 一 OpenCV 測試相關代碼,不用去管。
( 18) 【 video】 一一視頻分析組件,該模塊包括運動估計、背景分離、對象跟蹤等視頻處理相關內容。
( 19 ) 【Videostab】 一 Video stabilization,視頻穩定相關的組件,官方文檔中沒有多作介紹,不用管它。函數
讀入視頻有兩種方法
VideoCapture capture; capture. open("l .avi");
VideoCapture capture("1.avi");
視頻讀入到VideoCaptme類對象以後,緊接着能夠用一個循環將每一幀顯示出來,相關代碼以下:
//循環顯示每一幀
while (1) { Mat frame; / /定義一個Mat交量,用於存儲每一幀的圖像 capture>>frame; //讀取當前幀 imshow{"讀取視頻", frame); / /顯示當前幀 waitKey(30); //延時30ms }
調用攝像頭進行視頻採集的話, 將代碼VideoCapturecapture (" l.avi ");中的"l.avi"換爲0就能夠了,表示調用攝像頭而不是從文件中讀取視頻