OpenCV學習
OpenCV3較OpenCV2改變
1)C風格的API完全被C++的API代替,程式碼更加簡潔,不易出錯。C++的API將更加簡潔。
2)所有的演算法都將繼承自cv::Algorithm介面。
3)大型的模組將拆分為小的模組。
OpenCV應用層語言
Python、Java、C
OpenCV作業系統:
Windows、Linux、MacOSx、IOS、Android、WinRTx
硬體
GPU、x86、x64、ARM、MIPS
OpenCV中執行緒
Concurrency:Windows
GCD:MacOSx、IOS
TBB:Windows、MacOSx、Linux、Android、(WinRT)
OpenCV程式設計中使用的加速手段
針對GPU的加速:CUDA、OpenCL
針對x86和x64加速:OpenCL、SSE/AUX
針對ARM加速:NEON
1)TBB:並行程式設計,針對多執行緒,多核處理器。TBB主要功能:並行演算法,任務排程,並行容器,同步原語,記憶體分配器。
2)IPP:(高度手工優化程式碼),多核並行,用於優化OpenCV效能。
3)OpenMP:實現跨平臺共享記憶體式多執行緒併發。
4)SSE加速:主要SEE指令進行加速。
5)CUAD(統一計算架構):針對GPU程式設計實行平行計算。
OpenCL:架構平臺編碼的程式框架,異構平臺可由CPU、GPU、DSP、FPGA或其他型別的處理器與硬體加速器組成。
OpenCV各模組總結:
1)opencv_core模組:程式庫的核心功能,特別是基本的資料結構和演算法函式;(OpenCV基本資料結構,動態資料結構,繪圖函式,陣列操作相關函式,輔助功能與系統函式和巨集,與OpenGL的互操作等)
2)opencv_imgproc模組:影像處理函式;(線性和非線性的影像濾波,影像幾何變換,其它影像轉換,直方圖相關,結構分析和形狀描述,運動分析和物件跟蹤,特徵檢測,目標檢測等)
3)opencv_highgui模組:影像、視訊讀寫函式和部分使用者介面函式;(高層GUI圖形使用者介面,包含媒體的I/O輸入輸出,視訊捕捉,影像和視訊的編解碼,圖形互動介面介面等)
4)opencv_features2d模組:特徵點檢測器、描述子以及特徵點匹配框架;(特徵檢測和描述子,特徵檢測器通用介面,描述符提取器通用介面,描述符匹配器通用介面,通用描述符匹配器通用介面,關鍵點繪製函式和匹配功能繪製函式等)。
5)opencv_calib3d模組:相機標定、雙視角幾何估計及立體函式;(相機校準和三維重建相關內容,如多視角幾何演算法,單個立體攝像頭標定,物體姿態估計,立體相似性演算法,3D資訊重建等)
6)opencv_video模組:運動估計、特徵跟蹤及前景提取函式和類;(視訊分析元件,該模組包括運動估計,背景分離,物件跟蹤等視訊處理相關內容)
7)opencv_objdetect模組:目標檢測函式;(Cascade Classification級聯分類器和Latent SVM等)
8)openc_ml模組:機器學習函式;(基本統計模型和分類演算法)
9)opencv_flann模組:計算幾何演算法;(高維的近似近鄰快速搜尋演算法庫,主要是快速近似最近鄰搜尋和聚類)
10)opencv_gpu模組:GPU加速程式碼等。
11)open_photo模組:影像修復和去噪模組。
OpenCV機器學習庫中主要實現演算法如下:
1)一般貝葉斯分類器(Normal Bayes Classifier):CvNormalBayesClassifier
2)K近鄰分類(K-nearest Neighbor Classifier): CvKNearest
3)支援向量機(Support Vector Machine):CvSVM
4)期望最大化(Expection Maximization): EM
5)決策樹(Decision Tree):CvDTree
6)隨機森林(Random Treess Classifier):CvForestTree
7)超隨機樹分類器(Extremely randomized trees Classifier): CvERTrees
8)Boost分類器(Boosted tree Classifier): CvBoost
9)梯度下降Boost分類器(Gradient Boosted Trees):CvGBTrees
10)神經網路(Artificial Neural Networks): CvANN_MLP
其中每種演算法實現的主要函式如下:
1)資料處理:主要是獲得訓練樣本和測試樣本資料等
2)分類器初始引數設定:主要是設定分類器訓練前的初始引數資訊等
3)訓練:主要是利用1)中訓練樣本和2)中的相關引數,進行迭代訓練,直到得到滿足條件的分類器
4)預測,分類:主要是利用3)中訓練得到的分類器對樣本進行分類預測等。
5)分類器讀寫儲存:主要完成從檔案節點中讀取分類器相關資訊以及將訓練得到的分類器相關資訊儲存到檔案中等。
OpenCV中CUAD加速模組介紹
1)cuda:CUDA-加速的計算機視覺演算法,包括資料結構cuda:GpuMat,基於cuda的相機標定及三維重建等。
2)cudaarithm:CUDA-加速的矩陣運算模組。
3)cudabgsegm:CUDA-加速的背景分割模組,通常用於視訊監控。
4)cudacodec:CUDA-加速的視訊編碼與解碼。
5)cudafeatures2d:CUDA-加速的特徵檢測與描述模組,與features2d/模組功能類似。
6)cudafilters/:CUDA-加速的影像濾波。
7)cudaimgproc/:CUDA-加速的影像處理演算法,包括直方圖計算,霍夫變換等。
8)cudaoptflow/:CUDA-加速的光流檢測演算法。
9)cudastereo/:CUDA-加速的立體視覺匹配演算法。
10)cudawarping/:CUDA-加速的快速影像變換,如透視變換、旋轉、改變尺寸等。
11)cudaev/:CUDA核心功能,類似core/模組中的基礎演算法。
OpenCV3.1增加功能
1)opencv_contrib/ccalib 全方位攝像機標定和立體三維重建
2)opencv_contrib/sfm module 從運動資訊中恢復三維場景結構
3)opencv_contrib/dpm module 改進的變形部件為基礎的模型
4)opencv_contrib/tracking module 採用核心化相關濾波實時多目標跟蹤
5)opencv_contrib/text module 改進和擴充套件場景文字探測
6)opencv_contrib/stereo module 立體匹配的改進
7)opencv_contrib/structured_light 結構關係標定
8)opencv_contrib/aruco 運用棋盤 + ArUco庫標定攝像頭
9)opencv_contrib/dnn module 深度神經網路框架的通用介面的實現
10)opencv_contrib/calib3d and opencv_contrib/ximgproc 邊緣意思過濾的最新進展,改進SGBM立體演算法
11)opencv_contrib/xobjdetect 改進的ICF檢測,WaldBoost實現
12)opencv_contrib/tracking module 多目標TLD演算法跟蹤
13)opencv_contrib/cnn_3dobj 3D姿態估計使用細胞神經網路
相關文章
- opencv 學習OpenCV
- 學習OpenCV——SVMOpenCV
- 學習OpenCV:hu矩OpenCV
- 學習OpenCV:骨架提取OpenCV
- opencv學習之基礎OpenCV
- opencv學習筆記(一)OpenCV筆記
- OpenCV學習之旅 簡介OpenCV
- opencv-python學習之旅OpenCVPython
- opencv學習(三)——繪圖功能OpenCV繪圖
- 學習opencv 習題答案-第五章OpenCV
- opencv學習之邊緣檢測OpenCV
- 學習OpenCV:濾鏡系列(6)——風OpenCV
- 學習OpenCV:濾鏡系列(8)——素描OpenCV
- 【OpenCV學習】影象卷積濾波OpenCV卷積
- 分享《學習opencv》中文版pdfOpenCV
- OpenCV學習筆記(4)——mixChannels函式OpenCV筆記函式
- OpenCV學習筆記(5)——normalize函式OpenCV筆記ORM函式
- OpenCV 名稱空間學習筆記OpenCV筆記
- 學習OpenCV:濾鏡系列(1)—— 雕刻&浮雕OpenCV
- 學習OpenCV:濾鏡系列(4)——波浪:正弦OpenCV
- 學習OpenCV:濾鏡系列(7)——漩渦OpenCV
- 【opencv學習筆記】001之opencv配置(win10+VS2015+OpenCV3.1.0)OpenCV筆記Win10
- OpenCV學習筆記-Harris角點檢測OpenCV筆記
- 學習Opencv2.4.9(四)---SVM支援向量機OpenCV
- OpenCV-Java版學習(2.影像入門)OpenCVJava
- OpenCV影像處理學習筆記-Day1OpenCV筆記
- 學習OpenCV:濾鏡系列(2)——擴張&擠壓OpenCV
- 學習OpenCV:濾鏡系列(9)——擴散(毛玻璃)OpenCV
- 學習OpenCV:濾鏡系列(14)——載入選區OpenCV
- 學習OpenCV:濾鏡系列(15)——羽化(模糊邊緣)OpenCV
- 準備Python環境學習OpenCV的使用PythonOpenCV
- OpenCV學習筆記(3)——Scalar資料型別理解OpenCV筆記資料型別
- opencv學習實踐(3) cv::waitKey()的使用OpenCVAI
- Opencv3 python學習2——視訊基礎OpenCVPython
- 學習OpenCV:濾鏡系列(12)——計算模式(強光)OpenCV模式
- 【OpenCV學習】多通道矩陣的賦值和取值OpenCV矩陣賦值
- OpenCV&Qt學習之四——OpenCV 實現人臉檢測與相關知識整理OpenCVQT
- opencv學習筆記四十四:移動物件統計OpenCV筆記物件