|
注意:
- 下列文檔以VC2008 Express為例,VC2010下的配置應與本文檔類似。
- VC 6.0不被OpenCV 2.3.1支持。
- VC Express是微軟提供的免費版,可從此處下載: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express
- 建議先不要自己編譯,如果使用預編譯好的庫有問題,再嘗試自己編譯。
安裝所需要的軟件
下載OpenCV
- 從本站下載欄目 http://www./index.php/Download 下載 OpenCV for Windows(也即 OpenCV-2.3.1-win-superpack.exe 文件)。
- 將 OpenCV-2.3.1-win-superpack.exe 解壓并放到某個目錄下,例如
D:\Program Files\OpenCV2.3.1 (無需運行setup.exe,解壓則可)。解壓后的目錄結(jié)構(gòu)如下圖。
安裝CMake(不打算自己編譯無需安裝)
從 http://www./cmake/resources/software.html 下載 Windows (Win32 Installer) 安裝。
編譯OpenCV(非必需步驟)
用CMake導出VC++項目文件
- 運行cmake-gui,設置where is the source code路徑為OpenCV安裝路徑(本文檔假定安裝位置為:
D:\Program Files\OpenCV2.3.1\opencv),并創(chuàng)建子目錄D:\Program Files\OpenCV2.3.1\opencv\build\my,并將cmake的"where to build the binaries"設置為這個目錄。
- 然后點 configure,在彈出的對話框內(nèi)選擇 Visual Studio 9 2008。
- 你可根據(jù)你的系統(tǒng)修改選項,修改后再次選擇“Congfigure”,完成后選擇“Generate”。
(注: 此處Open CV文件放的目錄不能包含漢字,否則“Congfigure”和“Generate”無法成功;同時需要關(guān)閉已經(jīng)打開的VS,否則CMake與VS的宏無法配置。 by:Jackyzzy 趙振陽)
編譯 OpenCV Debug和Release版本庫
完成上一步驟后,將在D:\Program Files\OpenCV2.3.1\opencv\build\my目錄下生成OpenCV.sln的VC Solution File,請用VC++ 2008 Express打開OpenCV.sln,然后執(zhí)行如下操作:
- 在Debug下,選擇Solution Explorer(解決方案資源管理器)里的 Solution OpenCV(解決方案“OpenCV”),點右鍵,運行"Rebuild Solution";如編譯無錯誤,再選擇INSTALL項目,運行"Build"。
- 在Release下,選擇Solution Explorer里的 Solution OpenCV,點右鍵,運行"Rebuild Solution";如編譯無錯誤,再選擇INSTALL項目,運行"Build"。
全部運行完畢后,針對你的系統(tǒng)的OpenCV庫就生成了。
配置VC
配置include路徑
也即告訴VC去什么地方尋找OpenCV的頭文件,打開VC,選擇菜單“工具”->“選項”->“項目和解決方案”->“VC++目錄”->“包含文件”,包含 D:\Program Files\OpenCV2.3.1\opencv\build\include;D:\Program Files\OpenCV2.3.1\opencv\build\include\opencv;D:\Program Files\OpenCV2.3.1\opencv\build\include\opencv2 如果是自己編譯的則輸入D:\Program Files\OpenCV2.3.1\opencv\build\my\install\include
配置lib路徑
也即告訴VC去什么地方尋找OpenCV的庫文件。
在剛才下載的文件OpenCV-2.3.1-win-superpack.exe 里,已經(jīng)為VC2008和VC2010預先編譯好了動態(tài)庫和靜態(tài)庫。因此我們不需要如早先版本那樣,自己用cmake編譯OpenCV。
- 自己編譯的庫,庫目錄為:
D:\Program Files\OpenCV2.3.1\opencv\build\my\install\lib
(注:由于自己編譯成功,lib文件在Debug和Release兩個文件中,加載庫時需到Debug和Release中,
我配置的庫目錄為:D:\Program Files\OpenCV2.3.1\opencv\build\my\install\lib\Debug,否則調(diào)試時無法進入Open CV代碼中。 by:Jackyzzy 趙振陽)
- 32位系統(tǒng) & VC2008,庫目錄為:
D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc9\lib
- 32位系統(tǒng) & VC2010,庫目錄為:
D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc10\lib
- 64位系統(tǒng) & VC2008,庫目錄為:
D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc9\lib
- 64位系統(tǒng) & VC2010,庫目錄為:
D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc10\lib
請根據(jù)自己的情況四選一,將庫目錄輸入菜單“工具”->“選項”->“項目和解決方案”->“VC++目錄”->“庫文件” 。如下圖所示:
設置環(huán)境變量
剛才設置的是動態(tài)庫,因此還需要將OpenCV的dll文件所在的目錄加入Path環(huán)境變量。dll文件目錄如下,請根據(jù)自己情況五選一:
- 自己編譯的庫,dll目錄為:
D:\Program Files\OpenCV2.3.1\opencv\build\my\install\bin
- 32位系統(tǒng) & VC2008,dll目錄為:
D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc9\bin
(注:此處環(huán)境變量應與上邊庫目錄一致,這樣能夠調(diào)試時能夠進入代碼,我自己的目錄是:D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc9\bin\Debug。 by:Jackyzzy 趙振陽)
- 32位系統(tǒng) & VC2010,dll目錄為:
D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc10\bin
- 64位系統(tǒng) & VC2008,dll目錄為:
D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc9\bin
- 64位系統(tǒng) & VC2010,dll目錄為:
D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc10\bin
由于有些函數(shù)需要TBB,所以需要將tbb所在的目錄也加入到環(huán)境變量Path中。TBB相關(guān)的DLL路徑為:
- 32位系統(tǒng) & VC2008:
D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\ia32\vc9
- 32位系統(tǒng) & VC2010:
D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\ia32\vc10
- 64位系統(tǒng) & VC2008:
D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\intel64\vc9
- 64位系統(tǒng) & VC2010:
D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\intel64\vc10
如下圖所示將OpenCV和TBB的dll文件所在的目錄系統(tǒng)環(huán)境變量Path中。加入后可能需要注銷當前Windows用戶(或重啟)后重新登陸才生效。
使用OpenCV 2.3.1編程
- 打開VC++ 2008 Express,創(chuàng)建一個Win32控制臺程序helloopencv;
- 選擇Solution Explorer里的opencvhello項目,點擊鼠標右鍵,選擇Properties。
- ,在[鏈接器 LINKER]的[輸入INPUT]中,為項目的Debug配置增加 [附加依賴項 Additional Dependencies]:
opencv_calib3d231d.lib; opencv_contrib231d.lib; opencv_core231d.lib; opencv_features2d231d.lib; opencv_flann231d.lib; opencv_gpu231d.lib; opencv_highgui231d.lib; opencv_imgproc231d.lib; opencv_legacy231d.lib; opencv_ml231d.lib; opencv_objdetect231d.lib; opencv_ts231d.lib; opencv_video231d.lib (可根據(jù)實際需要刪減)注意,請打開了新編輯窗口(即點擊了“...”按鈕)“附加依賴項”,并一條一條分別加入,一條一行(一個回車),(注意行末不要加";")否則會出現(xiàn)類似以下錯誤:1>LINK : fatal error LNK1104: 無法打開文件“…….lib”
- 如果下載的OpenCV不是2.3.1版本,請將"XXX231d.lib"中的"231"更改為對應的版本號,例如:下載OpenCV 2.4.0,則統(tǒng)一改為"XXX240d.lib",否則會出現(xiàn)類似以下錯誤:1>LINK : fatal error LNK1104: 無法打開文件“XXX.lib”
- 為項目的Release配置增加[附加依賴項 Additional Dependencies]:
opencv_calib3d231.lib; opencv_contrib231.lib; opencv_core231.lib; opencv_features2d231.lib; opencv_flann231.lib; opencv_gpu231.lib; opencv_highgui231.lib; opencv_imgproc231.lib; opencv_legacy231.lib; opencv_ml231.lib; opencv_objdetect231.lib; opencv_ts231.lib; opencv_video231.lib (可根據(jù)實際需要刪減)*
- 編譯運行下面的例程(需要將lena.jpg文件放在項目目錄下,即與生成的.exe文件同位置)(這里有誤。雙擊exe的話,圖片放在.exe同一文件夾內(nèi);按F5直接運行程序的話,lena.jpg要放在helloopencv\helloopencv里)。
/***********************************************************************
* OpenCV 2.3.1 測試例程
* 于仕琪 提供
***********************************************************************/
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
const char* imagename = "lena.jpg";
//從文件中讀入圖像
Mat img = imread(imagename);
//如果讀入圖像失敗
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//顯示圖像
imshow("image", img);
//此函數(shù)等待按鍵,按鍵盤任意鍵就返回
waitKey();
return 0;
}
作者
|