---恢復內容開始---
圖像處理技術一般包括圖像壓縮,增強和復原,匹配、描述和識別3個部分。圖像處理和計算機視覺的區別在於:圖像處理側重於“處理”圖像——如增強、還原、去噪、分割等;而計算機視覺重點在於使用計算機來模擬人的視覺。
OpenCV由一系列C函數和C++類構成,擁有包括500多個C函數的跨平台的中高層API。OpenCV還提供MLL機器學習庫,該機器學習庫主要用於統計方面的模式識別和聚類。OpenCV可用於解決如下領域的問題:人機交互、物體識別、圖像分區、人臉識別、動作識別、運動跟蹤、機器人。
OpenCV基本架構分析:...\opencv\build\include目錄,其中有opencv和opencv2。opencv文件夾包含舊版的頭文件,而opencv2包含着新版opencv2系列的頭文件。
OpenCV所有模塊:
(1)【calib3d】——該模塊主要是相機校准和三維重建相關的內容,包括基本的多視角幾何算法、單個立體攝像頭標定、物體姿態估計、立體相似性算法、3D信息的重建等。
(2)【contrib】——該模塊新增了新型人臉識別、立體匹配、人工視網膜模型等技術。
(3)【core】——核心功能模塊,包含OpenCV基本數據結構、動態數據結構、繪圖函數、數組操作相關函數、輔助功能與系統函數和宏、與OpenGL的互操作。
(4)【imgproc】——圖形處理模塊,包含線性和非線性的圖像濾波、圖像的幾何變換、其他圖像轉換、直方圖相關、結構分析和形狀描述、運動分析和形狀描述、運動分析和對象跟蹤、特征檢測、目標檢測等內容
(5)【features2d】——2D功能框架,包含特征檢測和描述、特征檢測器通用接口、描述符提取器通用接口、描述符匹配器通用接口、通用描述符匹配器通用接口、關鍵點繪制函數和匹配功能繪制函數
(6)【flann】——高維的近似近鄰快速搜索算法庫,包含快速近鄰最近鄰搜索、聚類
(7)【GPU】——運用GPU加速的計算機視覺模塊
(8)【highgui】——高層GUI圖形用戶界面,包含媒體的輸入輸出、視頻捕捉、圖像和視頻的編碼解碼、圖形交互界面的接口等
(9)【legacy】——一些已經廢棄的代碼庫,保留下來作為向下兼容,包含運動分析、期望最大化、直方圖、平面細分、特征檢測和描述、描述符提取器的通用接口、通用描述符的常用接口、匹配器
(10)【ml】——機器學習模塊,基本上是統計模型和分類算法,包含統計模型、一般貝葉斯分類器、K-近鄰、支持向量機、決策樹、提升、梯度提高樹、隨機數、超隨機數、期望最大化、神經網絡、MLData
(11)【nonfee】——一些具有專利的算法模塊,包含特征檢測和GPU相關的內容。
(12)【objdetect】——目標檢測模塊,包含Cascade Classification(級聯分類)和Latent SVM兩部分。
(13)【ocl】——運用OpenCL加速的計算機視覺組件模塊
(14)【photo】——包含圖像修復和圖像去噪兩部分
(15)【stitching】——圖像拼接模塊,包含拼接流水線、特點尋找和匹配圖像、估計旋轉、自動校准、圖片歪斜、接縫估測、曝光補償、圖片混合
(16)【superres】——超分辨率技術的相關模塊
(17)【ts】——OpenCV測試相關代碼
(18)【video】——視頻分析組件,該模塊包括運動估計、背景分離、對象跟蹤等視頻處理相關內容
(19)【Videostab】——視頻穩定相關組件
opencv.hpp中包含了OpenCV各模塊的頭文件,故編寫程序時,可寫上“#include<opencv2/opencv.hpp>”即可。
argc與argv參數:arg指的是“參數”,其中,argc為整數,用來統計運行程序時送給main函數的命令行參數的個數;*argv[]:為字符串數組,用來存放指向字符串參數的指針數組,每一個元素指向一個參數。
int argc表示命令行字串的個數;
char *argv[]表示命令行參數的字符串。
以下是參考 http://blog.sina.com.cn/s/blog_6a0e04380100r289.html 深度和通道的理解
矩陣數據類型:
– CV_<bit_depth>(S|U|F)C<number_of_channels>
S = 符號整型 U = 無符號整型 F = 浮點型
E.g.:
CV_8UC1 是指一個8位無符號整型單通道矩陣,
CV_32FC2是指一個32位浮點型雙通道矩陣
CV_8UC1 CV_8SC1 CV_16U C1 CV_16SC1
CV_8UC2 CV_8SC2 CV_16UC2 CV_16SC2
CV_8UC3 CV_8SC3 CV_16UC3 CV_16SC3
CV_8UC4 CV_8SC4 CV_16UC4 CV_16SC4
CV_32SC1 CV_32FC1 CV_64FC1
CV_32SC2 CV_32FC2 CV_64FC2
CV_32SC3 CV_32FC3 CV_64FC3
CV_32SC4 CV_32FC4 CV_64FC4
其中,通道表示每個點能存放多少個數,類似於RGB彩色圖中的每個像素點有三個值,即三通道的。
圖片中的深度表示每個值由多少位來存儲,是一個精度問題,一般圖片是8bit(位)的,則深度是8.
---恢復內容結束---