[OpenCV]在Windows環境下安裝OpenCV、設定Visual Studio及Python

Posted on Updated on

近期青鳥將要展開Final Year Project,並會用到OpenCV。OpenCV是一個開源(Open Source)、跨平台(Cross Platform)的電腦視覺庫(Computer Vision Library)。這個Library支援能協助處理和開發很多複雜的Computer Vision問題,支援C++, Python, Java等多種程式語言,更支援Windows、Linux甚至是Android、iOS等多個作業系統(OS)。雖然它功能強大,但安裝上也是非常複雜,所以特別寫下此筆記。

範疇:OpenCV, Computer Vision
程度:中
簡述:安裝OpenCV2.4.11到Windows系統,並設定Visual Studio及Python開發環境。
安裝環境及涉及軟件:

  • Windows 8.1
  • Visual Studio 2013 Express for Desktop with Update 4
  • Python 2.7.10
  • numpy-1.9.2+mkl-cp27-none-win_amd64

雖然OpenCV已發展到3.0.0 RC1版,但它似乎仍未正式支援Python 3,也未必足夠穩定,所以本教學基於現時最新的穩定版本OpenCV 2.4.11,並使用它所支援的Python 2.7。

Part 1 – 安裝OpenCV

Step 1: 下載OpenCV

到官網下載OpenCV 2.4.11 Windows Pre-built:http://opencv.org/downloads.html

Step 2: 解壓縮

將OpenCV解壓縮到任一地方,例如C:\。解壓後會多出一個名為opencv的資料夾

Part 2 – 設定Visual Studio

Step 1: 新增OPENCV_DIR環境變數

以管理員身份打開命令提示字元(cmd),根據你的Visual Studio版本輸入以下指令以新增OpenCV的環境變數(Environment Variable):

setx -m OPENCV_DIR X:\OpenCV\Build\x86\vc12
當中"X:\OpenCV\"是OpenCV的所在路徑,“x86”是供32-bit供、64-bit則為"x64″,"vc12″是Visual Studio 2013,如用2012版請改為"vc11″,2010版則改為"vc10″。這裡請根據自己需要設定。

Step 2: 設定PATH

到"控制台>系統>進階系統設定>進階>環境變數",編輯PATH,並加入";%OPENCV_DIR%\bin“。

Step 3: 建立Project

開啟Visual Studio,建立新C++ Project

螢幕截圖 2015-06-02 13.24.52

Step 4: 新增Property Sheet

開啟Property Manage (View > Other Windows > Property Manager)

分別在Debug和Release中建立專屬的Property Sheet (OpenCV2411_Debug/ OpenCV2411_Release)

螢幕截圖 2015-06-02 13.26.53_proc

Step 5: 設定Property Sheet

打開OpenCV2411_Debug,在"C/C++ > General > Additional Include Directories" 一欄加入以下內容:
$(OPENCV_DIR)\..\..\include

螢幕截圖 2015-06-02 13.27.43

在"Linker > General > Additional Library Directories"一欄加入以下內容:
$(OPENCV_DIR)\lib

螢幕截圖 2015-06-02 13.27.37

在"Linker > Input> Additional Dependencies"一欄加入需要的Libraries,所有Libraries可以在"X:\opencv\build\x64\vc12\lib"中找到。當中2411是OpenCV的版本,d是Debug用的Libraries。

螢幕截圖 2015-06-02 13.28.01_proc

Release的Property Sheet也是用同樣的方法設定,不過Additional Dependencies改用沒有d的版本。

以下是OpenCV2.4.11的所有Libraries:

Debug Version

opencv_calib3d2411d.lib
opencv_contrib2411d.lib
opencv_core2411d.lib
opencv_features2d2411d.lib
opencv_flann2411d.lib
opencv_gpu2411d.lib
opencv_highgui2411d.lib
opencv_imgproc2411d.lib
opencv_legacy2411d.lib
opencv_ml2411d.lib
opencv_nonfree2411d.lib
opencv_objdetect2411d.lib
opencv_ocl2411d.lib
opencv_photo2411d.lib
opencv_stitching2411d.lib
opencv_superres2411d.lib
opencv_ts2411d.lib
opencv_video2411d.lib
opencv_videostab2411d.lib

Release Version:

opencv_calib3d2411.lib
opencv_contrib2411.lib
opencv_core2411.lib
opencv_features2d2411.lib
opencv_flann2411.lib
opencv_gpu2411.lib
opencv_highgui2411.lib
opencv_imgproc2411.lib
opencv_legacy2411.lib
opencv_ml2411.lib
opencv_nonfree2411.lib
opencv_objdetect2411.lib
opencv_ocl2411.lib
opencv_photo2411.lib
opencv_stitching2411.lib
opencv_superres2411.lib
opencv_ts2411.lib
opencv_video2411.lib
opencv_videostab2411.lib

往後所有新Project都需要作相同設定,但你可以匯入先前設定好的Property Sheet省點功夫。

Step 5: 測試

建立一個測試檔(main.cpp),加入以下Source code,並進行Build

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include 

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    if( argc != 2)
    {
     cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
     return -1;
    }

    Mat image;
    image = imread(argv[1], IMREAD_COLOR); // Read the file

    if(! image.data ) // Check for invalid input
    {
        cout << "Could not open or find the image" << std::endl ;
        return -1;
    }

    namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
    imshow( "Display window", image ); // Show our image inside it.

    waitKey(0); // Wait for a keystroke in the window
    return 0;
}

螢幕截圖 2015-06-02 13.23.12

如無法Build,而錯誤指無法找到include path之類,請檢查前面的步驟有否依足。

成功Build後可於cmd運行程式,指令如下:

cd [program path]
[program name] [image path]

如出現0xc00007b錯誤,代表64-bit不被支援,你可以更改OPENCV_DIR回x86的位置。

如運行正常,應會顯示你所指定的圖片:

螢幕截圖 2015-06-02 15.01.03

Part 3 – Python設定

Step 1: 安裝Python

https://www.python.org/ 下載並安裝Python 2.7版,更新的版本OpenCV 2並不支援。

Step 2: 安裝Libraries

將"X:\opencv\build\python\2.7\x64″或"X:\opencv\build\python\2.7\x86″內的所有檔案放到"X:\Python27\Lib\site-packages"

Step 3: 下載NumPy

NumPy是OpenCV需要用到的extension,如安裝的是32-bit版Python,可到https://pypi.python.org/pypi/numpy下載CP27版的NumPy,64-bit版則需要到http://www.lfd.uci.edu/~gohlke/pythonlibs/下載非官方版。

Step 4: 安裝NumPy

將下載回來的.whl檔放到"X:\Python27\Scripts",透過cmd執行同位置的pip2.7.exe,加入該.whl檔作為argument,pip就會安裝好NumPy

Step 5: 測試匯入

打開IDLE,輸入以下script,成功的話不會出現錯誤並會顯示OpenCV版本:

import cv2
print cv2.__version__

螢幕截圖 2015-06-02 15.20.18

廣告

One thought on “[OpenCV]在Windows環境下安裝OpenCV、設定Visual Studio及Python

    蔡志鴻 said:
    29/11/2015 at 下午 11:08

    您好:

    我是python的初學者,在網路上看到你的文章,寫得很清楚,
    對我幫助很大,可否請教您一個問題
    我的作業系統是win7 64bit 版本
    依照您的步驟裝到
    Step 4: 安裝NumPy 時 出現下面訊息
    ———————————————————————-
    Processing numpy-1.9.3+mkl-cp27-none-win_amd64.whl
    Writing c:\users\tch0606.user-hp\appdata\local\temp\easy_install-smajyy\numpy\setup.cfg
    Running numpy\setup.py -q bdist_egg –dist-dir c:\users\tch0606.user-hp\appdata\local\temp\easy_install-smajyy\numpy\egg-dist-tmp-zyxxx2
    This is the wrong setup.py file to run
    ———————————————————————–

    我暫時不管它,接著進入IDLE 輸入下面的script

    結果就變成這樣:
    >>> import numpy
    >>> import cv2

    Traceback (most recent call last):
    File “", line 1, in
    import cv2
    ImportError: DLL load failed: %1 不是正確的 Win32 應用程式 。

    —————————————–
    你可以幫我解惑嗎?
    謝謝!!

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s