OpenCV是一個基于BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。OpenCV用C++語言編寫,它的主要接口也是C++語言,但是依然保留了大量的C語言接口。該庫也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。這些語言的API接口函數可以通過在線文檔獲得。如今也提供對于C#,Ch, Ruby的支持。
OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一個基于BSD許可[1] (開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows和Mac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。 最新版本是3.3 ,2017年8月3日發布。
OpenCV 擁有包括 500 多個C函數的跨平臺的中、高層 API。它不依賴于其它的外部庫——盡管也可以使用某些外部庫。OpenCV 為Intel? Integrated Performance Primitives (IPP) 提供了透明接口。 這意味著如果有為特定處理器優化的 IPP 庫, OpenCV 將在運行時自動加載這些庫。
VC++是微軟公司開發的一個集成開發環境,具有多方面強大的功能,可以利用其開發許多領域的實用軟件,數字圖像處理也是其主要功能之但純用VC++處理圖像難度很大,僅圖像的讀入和顯示就需要很大的代碼量,并要求開發人員必須對圖像的內部結構認識清晰且能熟練使用C+t語言。而對于初次使用VC++處理圖像的人員來說要做到這些方面確實有一定的難度。OPENCV提供了許多數字圖像處理的函數,如果能和VC++結合使用將會在很大程度上降低工作難度,減少工作量。本文以灰度圖像的目標提取為例說明OPENCV和VC++結合處理圖像的能力。
環境配量
在VC++中使用OPENCV函數,首先要將OPENCV函數庫嵌入到VC++中。目前OPENCV最典型的版本為1.0和2.0,VC++版本有6.0,2005和2008,若要使用OPENCV2.0則必須使用VC++2005或VC++2008,因為目前OPENCV2.0在VC++6.0中還沒有成功案例。本文以OPENCV1.0和VC++6.0作為開發環境。將OPENCV1.0函數庫嵌入到VC++6.0的方法很多資料上都有詳細的闡述,這里就不做介紹了。
目標提取
目標提取的任務是從單幅圖像或序列圖像中將感興趣的目標與背最分割開來,用于后續的處理。感興趣目標的有效提取對于目標分類、身份識別和行為理解等中高層次的任務非常重要,因為后續的處理過程通常只考慮圖像中對應于感興趣區域的像素,并將極大的促進視頻編碼、檢索、人機交互、運動捕捉等課題的研究目標提取技術最常見的處理過程如圖1所示:

導入圖像
對一幅圖像進行處理之前,首先要讀取圖像的相關數據,為了觀察算法的實現效果,還需清楚地看到處理后的圖像結果,這就需要讀入和顯示圖像。假若只用VC++,需要開發人員對圖像的結構及VC++知識有個深刻的理解,代碼量大,運算復雜,這就讓很多初學者望而卻步,然而在VC++環境下借助OPENCV函數庫,可以方便的讀入和顯示圖片。代碼如下:
Ip1Image*img=cvLoadImage(“E: \hua.bmp”,-1) ;
cvNamedWindow(“win1”,0) ;
cvShowImage(“win1”,img) ;
cvWai tKey (0) ;
第一句功能為讀入圖像,需要注意的是表示路徑的反斜杠必須為“\”,因為字符串中“\”為轉義字符,代表一個“”,參數“-1”表示以原有顏色通道顯示圖像(還可以選擇別的值,在這里就不加說明了); 第二句功能為建立一個名字為“win1“ 的窗口,“0”表示窗 口 大小由系統自動給定; 第三句功能是將圖像在“win1” 窗口中顯示; 第四句功能為延遲窗口顯示時間,按回車鍵窗口會關閉,假若沒有第四局,圖像會閃一下消失,用戶觀察不到具體的圖像。
電子發燒友App




評論