windows下安裝opencv
opencv(open source computer vision library)是一個基於C/C++語言的開源影象函式處理庫。
它的主要模組包括:
- cv —— 核心函式庫
- cvaux —— 輔助函式庫
- cxcore —— 資料結構與線性代數庫
- highgui —— GUI函式庫
- ml —— 機器學習函式庫
opencv是跨平臺的,支援包括windows、unix以及android等平臺。下圖是英文wiki上一張關於opencv概述的圖。關於opencv的一系列功能以及特性,本文不再贅述,如果要了解,請移步至opencv的中文站點介紹。
本文將會講解在wndows上如何使用VS2010安裝opencv,並以一個簡單的程式作為結束。opencv在近期推出了2.3版本,不過本文仍然以2.2版本為例。其他安裝請參考
安裝方式有兩種選擇:
- 直接下載OpenCV-2.2.0-win32-vs2010.exe檔案。可以在這頁找到下載。這種方式很傻瓜,直接雙擊安裝即可。安裝過程中勾選“Add OpenCV to system PATH for all users”選項。(當然也可以安裝完畢新增,在環境變數path中新增“<安裝路徑>/opencv/bin/”)
- 另外一種是原始碼安裝(壓縮包地址也可以在這裡找到)。如果你想用IPP、CUDA或者Qt自定義安裝opencv,你就需要從原始碼安裝。
下面著重說一下原始碼安裝的步驟。首先是編譯。
第一步是用CMake匯出VC++專案檔案。
-
首先需要下載CMake(
- 安裝完成後,開啟cmake-gui,設定路徑為OpenCV安裝路徑(本文件假定安裝位置為:C:\OpenCV2.2,即下載的壓縮包解壓地址),並建立子目錄C:\OpenCV2.2\vs2010,用於存放編譯結果。
- 然後點 configure,在彈出的對話方塊內選擇 Visual Studio 10(這裡根據你的visual studio的版本確定,vs2010對應的是10,而2008對應的9)。完成後選擇“Generate”。
匯出完成後,轉到專案檔案(本例在C:\OpenCV2.2\vs2010下),開啟OpenCV.sln檔案。分別在debug和release下編譯。
完成後就是配置環境變量了。將“C:\OpenCV2.2\vs2010\bin”新增至windows系統環境變數path中。
以上這部分可以參考中文安裝文件。
最後,我們需要配置visual studio的開發環境。
對於vs2008或者以下版本。選擇 Tools -> Options -> Projects and Solutions -> VC++ Directories(中文版為:工具 --> 選項 --> 專案和解決方案 --> vc++目錄)。
- Show directories for選擇executable files,加入目錄 C:\OpenCV2.2\vs2010\bin
- Show directories for選擇include files,加入目錄 C:\OpenCV2.2\vs2010\include\opencv,和C:\OpenCV2.2\vs2010\include
- Show directories for選擇library files,加入目錄C:\OpenCV2.2\vs2010\lib
對於vs2010,這個編輯功能已經被否決。這時候隨便開啟一個專案。接著開啟檢視-->其他視窗-->屬性管理器(property manager)。接著專案-->Debug | Win32 --> Microsoft.Cpp.Win32.user,右擊屬性。在“vc++目錄”做以上修改。
最後我們以一個開啟圖片的程式為結尾。
- 開啟VS2010,建立一個Win32控制檯程式opencvhello。
-
選擇Solution Explorer(解決方案)裡的opencvhello專案,點選滑鼠右鍵,選擇Properties,在[連結器
LINKER]的[輸入INPUT]中:
為專案的Debug配置增加 [依賴的庫 Additional Dependencies]:opencv_core220d.dll、opencv_highgui220d.lib和opencv_imgproc220d.lib
(注意,檔名opencv_core220d.dll 可能是opencv_***d.lib等形式,具體應檢視C:\OpenCV2.2\vc2010\lib。如果使用的是OpenCV2.1,應輸入:opencv_core210d.lib、opencv_highgui210d.lib和opencv_imgproc210d.lib )
為專案的Release配置增加[依賴的庫 Additional Dependencies]:opencv_core220.dll、opencv_highgui220.lib和opencv_imgproc220.lib (注意:如果使用的是OpenCV2.1,應輸入:opencv_core210.lib、opencv_highgui210.lib和opencv_imgproc210.lib)
在 [配置屬性 Configuration Properties]- [General] -[字符集 Character Set] 修改為使用“多位元組字符集” (由於2008預設是以Unicode字符集編譯的) - 編譯執行下面的例程(就以我以前文章經常用的例子中的圖片,主要要將lam.jpg檔案放在專案目錄下)。
/*********************************************************************** * OpenCV 2.0 測試例程 ***********************************************************************/ #include "stdafx.h" #include "highgui.h" //所有的以新風格命名的函式都在 cv 名稱空間中 //如果希望不要每次都輸入 cv:: ,則可使用下面語句 //using namespace cv; int _tmain(int argc, _TCHAR* argv[]) { const char* imagename = "lam.jpg"; cv::Mat img = cv::imread(imagename); // Matlab風格的 cvLoadImage 函式的另一種呼叫 if(img.empty()) { fprintf(stderr, "Can not load image %s\n", imagename); return -1; } if( !img.data ) // 檢查是否正確載入影象 return -1; cv::namedWindow("image", CV_WINDOW_AUTOSIZE); //建立視窗 cv::imshow("image", img); //顯示影象 cv::waitKey(); // 等待鍵盤事件退出 return 0; }
圖片為: