1. 程式人生 > >windows下安裝opencv

windows下安裝opencv

opencv(open source computer vision library)是一個基於C/C++語言的開源影象函式處理庫。

它的主要模組包括:

  • cv —— 核心函式庫
  • cvaux —— 輔助函式庫
  • cxcore —— 資料結構與線性代數庫
  • highgui —— GUI函式庫
  • ml —— 機器學習函式庫

opencv是跨平臺的,支援包括windows、unix以及android等平臺。下圖是英文wiki上一張關於opencv概述的圖。關於opencv的一系列功能以及特性,本文不再贅述,如果要了解,請移步至opencv的中文站點介紹

opencv overview

本文將會講解在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++目錄”做以上修改。

opencv install config

最後我們以一個開啟圖片的程式為結尾。

  • 開啟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;
}

圖片為:

lam.jpg