OpenCV:概述、結構和內容
1、OpenCV的定義:
OpenCV的英文全稱是Open Source Computer Vision Library。它是一個開源的計算機視覺庫,它由一系列 C 函式和少量 C++ 類構成,實現了影象處理和計算機視覺方面的很多通用演算法。
2、OpenCV的特點:
(1)OpenCV採用C/C++語言編寫,可以執行在Linux/Windows/Mac等作業系統上。
(2)OpenCV提供了Python、Ruby、MATLAB以及其他語言的介面。
(3)它採用優化的C程式碼編寫,能夠充分利用多核處理器的優勢
(4)具有良好的可移植性
3、OpenCV的設計目標:
執行速度儘量快,主要關注實時應用。如果是希望在Intel平臺上得到更快的處理速度,可以購買Intel的高效能多媒體函式庫IPP(Integrated Performance Primitives)。IPP庫包含許多從底層優化的函式,這些函式涵蓋多個應用領域。如果系統已經安裝了IPP庫,OpenCV會在執行時自動使用相應的IPP庫。
【注】:OpenCV使用優化了的C和C++程式碼實現,因此它對IPP不存在任何的依賴。
4、OpenCV的應用領域
(1)人機互動 (2)物體識別 (3)圖象分割 (4)人臉識別 (5)動作識別 (6)運動跟蹤 (7)機器人 (8)運動分析 (9)機器視覺 (10)結構分析
5、OpenCV的結構和內容
OpenCV主體分為五個模組,其中四個模組如下圖所示。
OpenCV的CV模組包含基本的影象處理函式和高階的計算機視覺演算法。ML是機器學習庫,包含一些基於統計的分類和聚類工具。HighGUI包含影象和視訊輸入/輸出的函式。CXCore包含OpenCV的一些基本資料結構和相關函式。
【具體內容如下】:
(1) cxcore
基礎結構:CvPoint,CvSize,CvScalar等
陣列操作:cvCreateImage,cvCreateMat等
動態結構:CvMemStorage,CvMemBlock等
繪圖函式:cvLine,cvRectangle等
資料儲存和執行時型別資訊:CvFileStorage,cvOpenFileStorage等
錯誤處理和系統函式:cvGetErrStatus,cvAlloc,cvFree等
(2) cv
影象處理:cvSobel,cvCanny等
結構分析:ContourArea等
運動分析與目標跟蹤:cvMeanShift等
模式識別:CvHaarFeature
攝像頭定標與三維重建:cvCalibrateCamer2
(3)Machine Learning(ML)
包含許多聚類、分類和資料分析函式。如Bayes分類器,K近鄰演算法,支援向量機,決策樹,神經網路等等。
(4)HighGUI
影象介面函式: cvNamedWindow
讀影象和儲存影象:cvLoadImage,cvSaveImage
讀視訊和寫視訊:CvCreateFileCapture等
(5)cvcam
攝像機介面,在Opencv1.0以後的版本中已經被移除
(6)cvaux
該模組中一般存放一些即將被淘汰的演算法和函式(如基於嵌入式隱馬爾科夫的人臉識別演算法),還包含一些實驗性的演算法和函式(前景檢測,背景剔除等)