OpenCV3編程入門筆記(一)


---恢復內容開始---

  圖像處理技術一般包括圖像壓縮,增強和復原,匹配、描述和識別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.

 

 

 

 

 

 

 

---恢復內容結束---


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM