在windows 7下配置opencv 2.4.3的開發環境


環境

操作系統:Windows 7 旗艦版 32-bit (6.1, Build 7601) Service Pack 1

opencv版本:version 2.4.3

C++:Microsoft Visual C++ 2010 Express

過程

可以有兩種方式安裝opencv開發庫:第一種,使用預編譯的庫(.exe格式)直接安裝;第二種,從git上獲取最新的源代碼,然后自己編譯。

Solution 1:使用預編譯的庫

從下面的網站中下載需要的opencv版本,這里是opencv 2.4.3(這一版本好像沒有提供預編譯的庫):

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/

下載得到的OpenCV-2.4.3.exe,其實是一個打包的文件,運行之后得到一個3.10G大小的文件夾,名為opencv,如圖:

捕獲

這里好像是需要自已進行編譯的,所以還是采用第二種方法。

Solution 2:本地編譯

step 1:安裝必要的軟件和第三方庫

  • 安裝Microsoft Visual Studio ,當然可以采用其它的IDE開發工具,這里我使用的是 Microsoft Visual C++ 2010 Express
  • 安裝CMake,用於從opencv的源代碼中,產生相應的項目文件——用於編譯產生必要的庫,我使用的是cmake-2.8.10.2-win32-x86.exe
  • opencv源代碼,有兩種方式獲得(推薦第二種方式)(第一種方式獲得440M左右的源代碼,第二種方式則有3.10G左右包括了預編譯的庫等):

              捕獲2

上面三項內容已足以開始opencv的編譯安裝,但是還有一些第三方的工具,推薦安裝。

  • python庫,提供opencv中python的API, 我使用2.7.3版本
    • 安裝python擴展安裝工具Setuptools(用於安裝sphinx),貌似只支持到python2.7版本
    • 安裝Sphinx(python文檔生成工具,用於創建opencv文檔)
      • 打開powershell (或者cmd)
      • 執行:cd D:\Develop\Python27\Scripts
      • 再執行:.\easy_install.exe sphinx,就好了
  • Numpy,python的科學計算包 。下載並安裝即可。我使用的是numpy-1.7.0rc1-win32-superpack-python2.7.exe,它會自動檢測python的安裝目錄
  • Miktex,tex文檔編輯生成工具,用於生成pdf格式的opencv文檔,我使用的是basic-miktex-2.9.4521.exe,它會根據需要自動下載相應的宏包。
  • Intel © Threading Building Blocks (TBB),opencv中的一些並行代碼可以使用TBB來進行加速,不裝也無所謂,裝上則運算效果更好一些。我使用的是4.1 update 1 ,將其解壓放入一個文件夾即可,如,D:\Develop\TBB
  • Intel © Integrated Performance Primitives ( IPP) ,( 收費)加速色彩變換,Haar 訓練,DFT函數,這里我沒有使用
  • Qt framework,opencv本身可以利用Qt庫獲得更好的圖形界面支持(相對於最初始的highgui). 目前,qt支持到vs2010,如果使用vs2012就需要從源代碼進行編譯。
    • 下載qt庫的開源安裝包(在這里下載http://qt-project.org/downloads),我使用的是qt-win-opensource-4.8.4-vs2010.exe,直接運行安裝即可
  • Eigen 針對線性代數運算的C++模板庫,實現了線性代數的相關算法。下載並解壓到相關的文件,如,D:\Develop\Eigen,我使用的是3.1.2版本,但是在編譯opencv的時候,設置EIGEN_INCLUDE_PATH為D:/Develop/Eigen/eigen-eigen-5097c01bcdc4/Eigen/src,會提示找不到Eigen/core,我猜測可能要對Eigen編譯安裝才行。對Eigen的編譯需要使用Fortain庫。
  • OpenEXR,用於處理高動態范圍的圖像的函數庫,下載並解壓放在一個目錄即可,如:D:\Develop\openexr-1.7.1
  • OpenNI Framework 沒有使用,openNI與特定的采集設備配合可以實現人機交互,手勢識別等等一系列的功能,其中一種采集設備就是Kinect

Step 2:使用CMake進行配置

  • 打開CMake(cmake-gui),設置”where is the source code”和”Where to build the binaries”,如下圖所示:

捕獲3

其中第一行是opencv源代碼的位置,第二行是你想要用於編譯opencv的位置,下面的Grouped和Advanced建議選上,可以對配置選項進行分組。

  • 按下左下方的Configure,選擇Visual Studio 10,如圖

捕獲6

然后選擇Finish,CMake會對當前的環境進行檢測。如果沒有問題就會完整顯示如下畫面:

捕獲4

  • 在WITH中,勾選需要使用的特性,比如我要使用TBB和Qt,那么就把WITH_TBB,WITH_QT選上。

捕獲5

  • 在Ungrouped Entries組中,手工指定CMake沒有檢測到,而你又需要使用的環境變量。比如,我需要TBB,就設定TBB_INCLUDE_DIRS為D:/Develop/TBB/tbb41_20121003oss/include等等。在這一步中,將上述第三方庫諸如python,qt等的環境變量在Ungrouped Entries中設定好。
  • 瀏覽其它選項,選擇需要的內容,特別地,在ENABLE中的ENABLE_SOLUTION_FOLDERS必須確定選上
  • 設定完成后,點擊左下方Generate,生成vs2010的工程文件。

Step 3:使用vs2010進行編譯

  • 進入在CMake中”Where to build the binaries”所設定的目錄,打開vs2010的solution,通過選擇下述的下拉菜單,來選擇編譯Debug版本和release版本(Build->Build Solution)。

捕獲7

    • 編譯安裝DEBUG版本
      • 選擇Debug模式,選擇Build->Build Solution,等待build完成。這一過程中可能會出現缺少python27_d.lib相關的錯誤,可以不必理會
      • 在INSTALL項目上,右鍵單擊,選擇build,這一步會把debug模式相關的文件(include,lib等)生成到<build目錄>\install下。這一過程中,關於python27_d.lib的錯誤可以不必理會
    • 編譯安裝RELEASE版本
      • 選擇Release模式,選擇Build->Build Solution,等待build完成。
      • 在INSTALL項目上,右鍵單擊,選擇build,這將會把release模式相關的文件(include,lib等)生成到<build目錄>\install下。

最后生成的<build目錄>\install如下圖所示:

捕獲8

<build目錄>\install\lib如下圖所示:(同時包含release和debug的庫)

捕獲9

  • 然后編譯opencv的文檔,如圖所示,分別單獨編譯docs和html_docs(文檔不會自動build)

WindowsBuildDoc

build過程會自動調用sphinx和Miktex進行文檔的創建。docs的結果在<build目錄>\doc中為pdf文件,html_docs的結果在<build目錄>\doc\_html文件夾中為index.html。這時候可以再build一次INSTALL項目,將生成的文檔安裝到<build目錄>\install\doc下

Step 4:添加OpenCV路徑至PATH

推薦使用Path Editor進行添加,如下圖所示:

捕獲10

其中我還添加了TBB和Qt的bin路徑。

另外,還可以設置系統的環境變量OPENCV_DIR來指向OpenCV的安裝路徑。我的是D:\Develop\Opencv\install

Step 5:檢查OpenCV是否安裝成功

打開<opencv Build目錄>\install\bin\Debug\contours2.exe(或者其他程序),如果成功運行,則表示OpenCV安裝成功!運行結果如下:

捕獲11捕獲12

 

遇到的問題

  • 問題一:在使用cmake的過程中,點擊Configure后,提示如下:

The CXX compiler identification is MSVC 16.0.30319.1
The C compiler identification is MSVC 16.0.30319.1
Check for working CXX compiler using: Visual Studio 10
Check for working CXX compiler using: Visual Studio 10 -- broken
CMake Error at C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCXXCompiler.cmake:54 (message):
  The C++ compiler "C:/Program Files/Microsoft Visual Studio
  10.0/VC/bin/cl.exe" is not able to compile a simple test program.

…… ……

LINK : fatal error LNK1123: failure during conversion to COFF: file invalid
or corrupt
[D:\Develop\Opencv\CMakeFiles\CMakeTmp\cmTryCompileExec521527363.vcxproj]

Done Building Project
"D:\Develop\Opencv\CMakeFiles\CMakeTmp\cmTryCompileExec521527363.vcxproj"
(default targets) -- FAILED.

…… ……

解決的辦法:

       首先,打開cmd,切換到C:/Program Files/Microsoft Visual Studio 10.0/VC/bin/目錄,執行cl.exe命令,出現錯誤,提示缺少mspdb100.dll,根據dudu的一篇文章《解決VS2010自帶的C/C++編譯器CL找不到mspdb100.dll的問題》,執行:

"C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat"
即可解決由環境變量缺失造成cl.exe不能使用的問題
       其次,對於 fatal error LNK1123,根據stackoverFlow的一個提問 LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt after installing VS2012 release preview,這是因為我安裝了vs2012,導致vs2012自帶的.NET4.5替換了原有的.NET,我卸載了vs2012以及.NET4.5組件,重新安裝.NET4.0,再次Configure就好了。
       cl.exe不能正常執行是由error LNK1123造成的,單單解決環境變量問題不能解決“‘cl.exe’ is not able to compile a simple test program”的問題

  • 問題二:執行CMake的configure命令,出現如下錯誤:

CMake Warning at C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/FindQt4.cmake:615 (message):
  C:/Qt/Qt5.0.0/5.0.0/msvc2010/bin/qmake.exe reported QT_INSTALL_LIBS as
  "C:/Qt/Qt5.0.0/5.0.0/msvc2010/lib" but QtCore could not be found there.  Qt
  is NOT installed correctly for the target build environment.
Call Stack (most recent call first):
  cmake/OpenCVFindLibsGUI.cmake:8 (find_package)
  CMakeLists.txt:377 (include)

…… ……

解決的辦法:

這一問題是因為,一開始我使用的是Qt5,我在C:/Qt/Qt5.0.0/5.0.0/msvc2010/lib中確實沒有找到QtCore,而且CMmake使用的是FindQt4.cmake,並不能找到Qt5的一些關鍵文件。換句話說,目前CMake(2.8.10.2)並不支持Qt5,所以我只好將Qt5卸載然后安裝qt-4.8.4,問題解決。

  • 問題三:在使用vs2010編譯Debug版本的opencv時,提示如下錯誤:

Error    1    error LNK1104: cannot open file 'python27_d.lib'    D:\Develop\Opencv\modules\python\LINK

解決的辦法:
這是因為在編譯Debug版的opencv時需要使用debug類型的庫,python27_d.lib是python的debug庫,這個問題不解決也沒有關系。如果要解決的話,可以下載python的源代碼,然后編譯python的Debug版本即可,不是一般的麻煩。

  • 問題四:如果在CMake中設置了GIT_EXECUTABLE,運行Configure之后,會顯示缺少libiconv-2.dll的錯誤

解決的方法:

這個問題的解決可以參考stackoverflow上的一個提問Git for Windows - The Program can't start because libiconv2.dll is missing,而我由於沒有設置GIT_EXECUTABLE,所以就回避了這個問題。

主要參考資料

OpenCV的在線文檔《Installation in Windows》,http://docs.opencv.org/doc/tutorials/introduction/windows_install/windows_install.html#windowssetpathandenviromentvariable


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM