原文轉自:http://blog.csdn.net/hunnish 做了少許修改。
OpenCV是Intel資助的開源計算機視覺庫。它由一系列 C 函數和少量 C++ 類構成,實現了圖像處理和計算機視覺方面的很多通用算法。
OpenCV 擁有包括 300 多個C/C++函數的跨平台的中、高層 API。它不依賴與其它的外部庫,盡管也可以使用某些外部庫。
OpenCV 對非商業應用和商業應用都是免費(FREE)的。(細節參考發布版本的 license)。另外OpenCV 也為Intel公司的 Integrated Performance Primitives (IPP) 提供了透明接口。這意味著如果有為特定處理器(當然是INTEL的處理器了)優化的的 IPP 庫, OpenCV 將在運行時自動加載這些庫。
更多關於 IPP 的信息請參考: http://www.intel.com/software/products/ipp/index.htm
總綱:
用C/C++編寫的開源計算機視覺庫。
目的是為了實時應用。
獨立於操作系統/硬件/圖形管理器。
通用的圖像/視頻載入、保存和獲取模塊。
底層和高層的應用開發包。
特征:
圖像數據的操作 ( 分配、釋放、復制、設置和轉換)。
圖像是視頻的輸入輸出I/O (文件與攝像頭的輸入、圖像和視頻文件輸出)。
矩陣和向量的操作以及線性代數的算法程序(矩陣積、解方程、特征值以及奇異值等)。
各種動態數據結構(列表、隊列、集合、樹、圖等)。
基本的數字圖像處理(濾波、邊緣檢測、角點檢測、采樣與差值、色彩轉換、形態操作、直方圖、圖像金字塔等)。
結構分析(連接部件、輪廓處理、距離變換、各自距計算、模板匹配、Hough變換、多邊形逼近、直線擬合、橢圓擬合、Delaunay 三角劃分等)。
攝像頭定標(發現與跟蹤定標模式、定標、基本矩陣估計、齊次矩陣估計、立體對應)。.
運動分析(光流、運動分割、跟蹤)。
目標識別(特征法、隱馬爾可夫模型:HMM)。
基本的GUI (圖像與視頻顯示、鍵盤和鼠標事件處理、滾動條)。
圖像標注(線、二次曲線、多邊形、畫文字)
OpenCV 模塊:
cv – 主要的OpenCV 函數。
cvaux – 輔助的(實驗性的)OpenCV 函數。
cxcore – 數據結構與線性代數支持。
highgui – 圖像界面函數。
目前OpenCV方面的資源已經很多了,當然最簡單的方法還是在網上搜索一下,比如在在 Google (http://www.google.com )中輸入 "OpenCV" 進行相關搜索。這裡給出一些作為參考:
參考手冊:
網絡資源::
中文官方網站:http://www.opencv.org.cn/
書籍:
Open Source Computer Vision Library by Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006).
視頻處理的樣例程序 (在 /samples/c/) :
彩色跟蹤:camshiftdemo
點跟蹤:lkdemo
運動分割:motempl
邊緣檢測: laplace
圖像處理的樣例程序(在 /samples/c/ ):
邊緣檢測: edge
分割:pyramid_segmentation
形態學操作: morphology
直方圖:demhist
距離變換:distrans
橢圓擬合:fitellipse
目前OpenCV的最新版本是 2006年11月發布的 OpenCV 1.0 版,它的一些新特性包括:
新函數與新特征
支持的新編譯器/環境:
- GCC 4.x
- Visual Studio .NET 2005.
注意:
工程文件 .vcproj's 以及相應的環境文件均被轉換成 VS.NET 2005 的格式,因此它們不能被 VS.NET 2003 打開。作為工作區,可以將工程文件和工作區轉換為 Visual Studio 6.0,再轉換到 VS.NET 2003。工程可以在 Win32 以及 x64 (a.k.a. EM64T/AMD64) 平台上編譯。默認情況下支持 OpenMP.
- 在 MacOSX 上,通用的 OpenCV 二進制代碼可以在缺省情況下編譯,因此 PPC 和 INTEL MAC『S 系統全部都支持。
- 取消了對 Borland C++ 的支持,但是仍然有一個腳本文件 utils\gen_make.py 可以通過生成文件makefile.bcc's 來編譯(沒有在 RC1 上測試)。
- 新的命令行 makefiles _make\makefile.* 被引入,允許用戶在 Win64 (EM64T/AMD64 and Itanium) 平台上編譯 OPENCV。具體細節參考文件 INSTALL。
cxcore:
- 增加了一些新的函數:cvMixChannels, cvRandShuffle, cvRange, cvCalcPCA, cvProjectPCA, cBackProjectPCA, cvNormalize, cvReduce, cvGetNumThreads, cvSetNumThreads, cvGetThreadNum. 更多細節參考 /docs/ref/opencvref_cxcore.htm 。
- 擴展了函數 cvCalcCovarMatrix, cvMulTransposed
- 為庫增加宏: 見 cxcore/include/cvver.h
- 為 CvImage 和 CvMatrix 增加 C++ 類:cxcore/include/cxcore.hpp 以及樣例 samples/c/image.cpp
- 矩陣的最大通道數增加到 64 個,盡管只有一些特殊函數才處理這樣的圖像。
cv:
- 新函數:cvPyrMeanShiftFiltering, cvWatershed, cvGetAffineTransform. 更多細節見docs/ref/opencvref_cv.htm。
- 擴展:cvDistTransform (true distance transform algorithm), cvThresh (Otsu adaptive algorithm), cvCanny (使用真實梯度)
- 所有的濾波函數重新編寫過,為線性可分以及不可分濾波增加了新的 C++ 類,並增加了morphology, laplace, box filer .見 cv/include/cv.hpp.
API 的變化:
cvCamShift, cvBoxPoints 以及所有其它與角度有關的函數,現在都用角度而不是弧度返回
cvaux:
- 增加了新的大型視頻監控模塊,見(cvaux/src/vs and cvaux/include/cvvidsurv.h)。該模塊完善了智能目標跟蹤功能,見 docs/vidsurv 中的描述。
ml (機器學習):
- 這是一個全新的為統計分類、回歸以及聚類而寫的 C++ 類庫. 見 docs/ref/opencvref_ml.htm.
-
highgui:
- 所有的視頻捕捉的代碼在結構上都重新構造並且按模塊劃分,采用了更好的函數名字(原有的函數名字通過宏仍然支持)。
- 增加了對 Quicktime (MacOSX) 和 Xine (Linux, (注意查看相關的許可)!)) 的支持.
捆綁與界面:
- 現在支持 IPP 5.1.*,而這是一個推薦與OPENCV一起使用的版本。用戶可以執行建立單獨的IPP DLL 作為二進制版本的分發。見(interfaces/ipp)。
- 大大提高並擴展了與 Python 的綁定(見 interfaces/swig[/python] 以及 samples/python).
優化
應用新的 IPP5.1 功能,下列的濾波函數都被大大優化:cvSobel, cvLaplace, cvErode, cvDilate.
cvFilter2D 對於大的內核運行得更快 (使用基於 DFT 的算法)
一些函數可以使用 OPENMP 做並行處理:cvHaarDetectObjects, cvCalcOpticalFlowPyrLK, cvDistTransform (只是對於新算法適用)。因此它們的運行速度在雙核CPU上要快 ~50-80% , 當代碼用 Intel compiler 或者 MSVC2005 編譯時。
OpenCV是一個開源的項目,它的成長與完善均依賴於廣大而熱情的參與者,因此了解OpenCV的最有效方法無疑是通過互聯網來自我學習和認識。當你拿到一個OpenCV版本時,要做的事情,簡單而言是:
參考本書以及OpenCV安裝包中提供的例子:大量的樣例程序是了解OpenCV最直接的方法,OpenCV本身所提供的例子均放置於:\samples\ 目錄下, 表示安裝OpenCV後的系統目錄。
在 Visual Studio 中加載 OpenCV workspace:
Microsoft Visual Studio 6.0 使用 opencv.dsw
Miscrosoft Visual Studio .NET 2003 使用 opencv.sln
Borland C++ BuilderX 使用 cbuilderx/opencv.bpgr選擇 cvsample 項目,編譯並運行。閱讀代碼並且按照自己的想法更改它。
在http://groups.yahoo.com/group/OpenCVOpenCV archives 搜索你感興趣的主題。
從 scratch 創建新的項目,或者修改現有的 cvsample。有專門為 Microsoft Visual Studio 設計的 application wizard 用來創建 OpenCV-aware 項目;它們從 http://groups.yahoo.com/group/OpenCV (Files section - 你必須注冊為 OpenCV@yahoogroups.com 用戶)查找到。
參加OpenCV的郵件組,具體方法是發送郵件到 OpenCV-subscribe@yahoogroups.com,成為成員後並登錄後,你可以在 http://groups.yahoo.com/group/OpenCV 閱讀內容。另外也可以訪問國內的一些OpenCV站點,如:OpenCV中文站點(http://www.opencv.org.cn)可以在那裡找到很多有用資料。
沒有留言:
張貼留言