在編寫使用OpenCV函數的程序時,首先,需要正確的配置工程設置。主要是設置預先編譯的頭文件的路徑與動態鏈接庫的路徑。
一 在VC編譯器下,在Project菜單下選擇setting,彈出對話框。
在Setting For 下拉菜單中選擇All Configurations , 爲Debug 和Release版本設置配置。
1 設置預編譯的頭文件
選擇C/C++ 【Category】,在下拉菜單中選擇Preprocessor,然後在Additional Include directories 中輸入以下幾項:
C:/Program Files /OpenCV/cv/include (根據本人機器上OpenCV的安裝路徑進行設置,如在D盤,則寫D: ,以下同)
C:/Program Files /OpenCV/otherlibs/highgui
C:/Program Files /OpenCV/cxcore/include(新版本需要)
C:/Program Files /OpenCV/otherlibs/cvcam/include
每一條之間用逗號隔開。其中C:/Program Files/Intel/opencv 爲OpenCV的安裝路徑,這是通用的安裝路徑,建議最好採用這種設置,以方便大家交流;不然,每次都要重新設置路徑,比較麻煩。
2 設置鏈接庫
在 Link按鍵下的 Category下拉菜單中選擇 Input選項(指定要連接的庫文件,放棄連接的庫文件hao ),在Additional library path中,輸入:
C:/Program Files /OpenCV/lib
最後在 Setting For下拉菜單中依次選擇 Win32 Debug和 Win32 Release,分別在Object /library modules 輸入:
cv.lib highgui .lib cxcore.lib cvcam.lib
注意每個庫之間用一個空格隔開。
或者直接在all configurations中的Object /library modules 輸入:cv.lib highgui.lib cxcore.lib(新版本需要) cvcam.lib(cxcore.lib highgui.lib 是幾乎所有OpenCV程序都要用到的函數庫,分別封裝了基本的函數和圖形界面接口,cv.lib中封裝了大量的圖像處理函數,cvcam.lib中封裝了很多針對視頻流的處理函數)
當前工程就可以使用OpenCV的函數了。
二 如果一直要使用OpenCV的函數,把其路徑設置到系統目錄下
在Tools 菜單下選擇 Options 子菜單,在彈出的對話框中選擇Directory,將用到的幾個庫的路徑添加進去。以後只需將所用的庫在Object /library modules下輸入就可以了,不用再每次指定路徑。
在Show directories for 下拉菜單中選擇Include files,輸入:
C:/Program Files /OpenCV/cv/include
C:/Program Files /OpenCV/otherlibs/highgui
C:/Program Files /OpenCV/cxcore/include(新版本需要)
C:/Program Files /OpenCV/otherlibs/cvcam/include
在Show directories for 下拉菜單中選擇Library files,輸入:
C:/Program Files /OpenCV/lib
注意:(防止每次都拷貝.dll文件)
我的電腦—屬性—高級—環境變量—path—C:/Program Files/OpenCV/bin
三 關於DLL的一點介紹
所謂:“工欲善其事,必先利其器”。鏈接的問題是使用OpenCV時一個經常遇到的問題,有必要做一簡單介紹。
動態鏈接DLL與靜態鏈接庫一樣包含了所提供函數的目標代碼,但程序運行動態鏈接庫中的函數時,連接程序並不將包含在動態鏈接庫中的目標函數的代碼複製至運行文件,而只是簡單的記錄了函數的位置信息,程序在運行時根據這些信息找到函數的目標代碼。(運行時連接,故稱爲動態鏈接庫。至於動態鏈接庫的詳細介紹以及其與靜態鏈接庫的優缺點比較,參見參考文獻。)
以上的設置就可以保證找到所需的動態鏈接庫,不過我們還是有必要對系統怎樣找到DLL文件做一瞭解:
函數在動態鏈接庫中的位置信息放在一個獨立的導入庫文件中(以.lib爲後綴)Windows將遵循下面的搜索順序來定位DLL:
1.包含EXE文件的目錄,
2.進程的當前工作目錄,
3. Windows系統目錄,
4. Windows目錄,
5.列在Path環境變量中的一系列目錄。
這樣 , 如果運行時仍然報錯:不到*.DLL, 那麼,就將所需的*.DLL粘貼到可執行文件的文件夾下
▲這裏有一個很容易發生錯誤的陷阱。如果你使用VC++進行項目開發,並且爲DLL模塊專門創建了一個項目,然後將生成的DLL文件拷貝到系統目錄下,從應用程序中調用DLL模塊。到目前爲止,一切正常。接下來對DLL模塊做了一些修改後重新生成了新的DLL文件,但你忘記將新的DLL文件拷貝到系統目錄下。下一次當你運行應用程序時,它仍加載了老版本的DLL文件,這可要當心!
▲在發佈自己的程序時,一定要記得提供相應的動態鏈接庫。
安裝完OpenCV_b5a後,打開Visual C++ 6.0,在Tools -> Directories選項中,Show Directories for中選擇Include files,在其中添加
C:/Program Files/OpenCV/cv/include
C:/Program Files/OpenCV/cvaux/include
C:/Program Files/OpenCV/cxcore/include
C:/Program Files/OpenCV/otherlibs/highgui
C:/Program Files/OpenCV/otherlibs/cvcam/include
選擇Source files,在其中添加
C:/Program Files/OpenCV/cv/src
C:/Program Files/OpenCV/cvaux/src
C:/Program Files/OpenCV/cxcore/src
C:/Program Files/OpenCV/otherlibs/highgui
C:/Program Files/OpenCV/otherlibs/cvcam/src/windows
選擇Library files,在其中添加
C:/Program Files/OpenCV/lib
在Project Setting ->Link的Input選項中,添加cv.lib cxcore.lib highgui.lib三個庫文件(這一步對於每個新工程都要重新設置,而前三步不需要)。
最後要把C:/Program Files/OpenCV/bin目錄下的幾個動態鏈接庫複製到工作目錄或者系統目錄。至此所有工作就完成了。