Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)

來源:互聯網
上載者:User

標籤:blog   http   io   ar   os   使用   sp   for   strong   

http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html

2012年4月給同學寫了篇傻瓜式的 VS2010+Opencv-2.4.0的配置攻略 結果沒有想到,點擊量一路飆升,固定在了Google “Opencv 配置” 關鍵詞搜尋的榜首。現在看看,已經過時了,版本升級後看不到ttb了,還有很多不足的地方需要修正。新電腦需要重新設定環境,結合新版本,再來寫篇最完美的傻瓜教程,看能不能超過以前的那篇 :)

環境:Windows 8.1, Opencv 2.4.8, VS 2013.

 歡迎轉載或參考,但請尊重作者勞動成果,轉載請註明出處,參考請引用連結!

目錄

  • 配置
    • 下載安裝軟體
    • 配置環境變數
    • 編寫Opencv的VS工程容屬性工作表
    • 建立VS測試工程
    • VS內配置Opencv
    • 測試
  • 進階
    • 直接文本編寫Opencv x64 x86 Debug Release 全相容屬性工作表
    • 通過VS介面建立自己的VS項目屬性工作表
配置下載安裝軟體

下載 Opencv for Windows 最新版本,本文是 Opencv 2.4.8。雙擊後會出現解壓提示,實際上就是“安裝”了,路徑填寫為 D:/Program Files,然後確定。

Note

 

D:/Program Files 可以為任意自己希望opencv安裝的路徑,解壓完成後,會在你所填目錄中新增一個 opencv檔案夾,裡面就是opencv的所有內容了。例如按照我的路徑,解壓完成後Opencv就在 D:/Program Files/opencv 裡面了。

下載 VS 2013,並安裝。(自己找破解吧)

配置環境變數

在系統變數裡面建立變數,名為 OPENCV ,值為自己解壓opencv路徑下的build路徑,如 D:\Program Files\opencv\build。

Tip

 

這一步是方便以後如果opencv路徑改變了,只需要修改此變數就可以了,而不必做大範圍修改。

在系統變數裡面編輯 Path 變數,在末尾添加 ;%OPENCV%\x86\vc12\bin 。

Note

 

x86和x64分別表示32bit和64bit的VS工程,根據自己的工程來修改,否則雖編譯成功但會運行錯誤;vc10, vc11, vc12 分別表示VS2010, VS2012, VS2013的Visual Studio使用的編譯器版本,根據自己的VS版本來填寫正確的編譯器版本號碼。

Note

 

多謝 @玄影遊俠 的提醒,環境變數設定好後最好登出(重啟)一下系統,可能有的系統內容變數不會立即生效,而導致一系列路徑相關的問題。

編寫Opencv的VS工程容屬性工作表

在opencv根目錄(例如 D:\Program Files\opencv)下建立VS屬性工作表檔案 opencv248.props,或者直接下載我的 opencv248.props 屬性工作表檔案。

opencv248.props 檔案內容如下:

<?xml version="1.0" encoding="utf-8"?><Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup> <IncludePath>$(OPENCV)\include;$(IncludePath)</IncludePath> <LibraryPath Condition="‘$(Platform)‘==‘Win32‘">$(OPENCV)\x86\vc12\lib;$(LibraryPath)</LibraryPath> <LibraryPath Condition="‘$(Platform)‘==‘X64‘">$(OPENCV)\x64\vc12\lib;$(LibraryPath)</LibraryPath> </PropertyGroup> <ItemDefinitionGroup> <Link Condition="‘$(Configuration)‘==‘Debug‘"> <AdditionalDependencies>opencv_calib3d248d.lib;opencv_contrib248d.lib;opencv_core248d.lib;opencv_features2d248d.lib;opencv_flann248d.lib;opencv_gpu248d.lib;opencv_highgui248d.lib;opencv_imgproc248d.lib;opencv_legacy248d.lib;opencv_ml248d.lib;opencv_nonfree248d.lib;opencv_objdetect248d.lib;opencv_ocl248d.lib;opencv_photo248d.lib;opencv_stitching248d.lib;opencv_superres248d.lib;opencv_ts248d.lib;opencv_video248d.lib;opencv_videostab248d.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <Link Condition="‘$(Configuration)‘==‘Release‘"> <AdditionalDependencies>opencv_calib3d248.lib;opencv_contrib248.lib;opencv_core248.lib;opencv_features2d248.lib;opencv_flann248.lib;opencv_gpu248.lib;opencv_highgui248.lib;opencv_imgproc248.lib;opencv_legacy248.lib;opencv_ml248.lib;opencv_nonfree248.lib;opencv_objdetect248.lib;opencv_ocl248.lib;opencv_photo248.lib;opencv_stitching248.lib;opencv_superres248.lib;opencv_ts248.lib;opencv_video248.lib;opencv_videostab248.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup /></Project>

這份屬性工作表為opencv2.4.8的VS2013工程屬性工作表,相容64位和32位平台,相容Debug和Release配置。詳細解釋看後文,後面在VS工程中配置Opencv只需要匯入這份屬性工作表就可以了。

Note

 

如果不是VS2013,或者Opencv版本不是2.4.8,一定要修改部分參數才能使用。詳細修改辦法看後文。

建立VS測試工程

檔案 -> 建立 -> 項目 -> Visual C++ -> Win32 控制台應用程式(輸入名稱test)

確定 -> 下一步 -> 附加選項選“空項目” -> 完成

VS內配置Opencv

這裡用VS屬性工作表的方式將Opencv配進工程,每次只需要添加屬性工作表即可完成配置,比手工介面配置方便很多。

屬性管理員 -> 右鍵 "test"(工程名) -> 添加現有屬性工作表

找到之前建立或者下載的屬性工作表( D:\Program Files\opencv\opencv248.props ),添加進工程

測試

方案總管 -> 源檔案(右鍵)-> 添加 -> 建立項

Visual C++ -> C++檔案:輸入名稱test點添加

粘貼下面的代碼,儲存:

#include <opencv2\opencv.hpp>#include <iostream>#include <string>using namespace cv;using namespace std;int main(){ Mat img = imread("pp.jpg"); if (img.empty()) { cout << "error"; return -1; } imshow("pp的靚照", img); waitKey(); return 0;}

把自己的靚照改名為pp.jpg,然後放到工程項目的test檔案夾裡面(是裡面那個test檔案夾)

按F5偵錯工具,如果你的圖片出來了就OK了。

進階直接文本編寫Opencv x64 x86 Debug Release 全相容屬性工作表

建立屬性工作表文檔 opencv248.props,填寫下面的xml內容並儲存:

<?xml version="1.0" encoding="utf-8"?><Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup> <IncludePath>$(OPENCV)\include;$(IncludePath)</IncludePath> <LibraryPath Condition="‘$(Platform)‘==‘Win32‘">$(OPENCV)\x86\vc12\lib;$(LibraryPath)</LibraryPath> <LibraryPath Condition="‘$(Platform)‘==‘X64‘">$(OPENCV)\x64\vc12\lib;$(LibraryPath)</LibraryPath> </PropertyGroup> <ItemDefinitionGroup> <Link Condition="‘$(Configuration)‘==‘Debug‘"> <AdditionalDependencies>opencv_calib3d248d.lib;opencv_contrib248d.lib;opencv_core248d.lib;opencv_features2d248d.lib;opencv_flann248d.lib;opencv_gpu248d.lib;opencv_highgui248d.lib;opencv_imgproc248d.lib;opencv_legacy248d.lib;opencv_ml248d.lib;opencv_nonfree248d.lib;opencv_objdetect248d.lib;opencv_ocl248d.lib;opencv_photo248d.lib;opencv_stitching248d.lib;opencv_superres248d.lib;opencv_ts248d.lib;opencv_video248d.lib;opencv_videostab248d.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <Link Condition="‘$(Configuration)‘==‘Release‘"> <AdditionalDependencies>opencv_calib3d248.lib;opencv_contrib248.lib;opencv_core248.lib;opencv_features2d248.lib;opencv_flann248.lib;opencv_gpu248.lib;opencv_highgui248.lib;opencv_imgproc248.lib;opencv_legacy248.lib;opencv_ml248.lib;opencv_nonfree248.lib;opencv_objdetect248.lib;opencv_ocl248.lib;opencv_photo248.lib;opencv_stitching248.lib;opencv_superres248.lib;opencv_ts248.lib;opencv_video248.lib;opencv_videostab248.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup /></Project>

這份屬性工作表為opencv2.4.8的VS工程屬性工作表,相容64位和32位平台,相容Debug和Release配置。

很容易看出如何修改:

  • 如果你沒有配置%OPENCV%環境變數,則只需要修改 IncludePath 和 LibraryPath 所指三個標籤,用絕對路徑代替$(OPENCV);
  • 如果你的Visual Studio版本與我的不同,則需要修改 LibraryPath 所指兩個標籤的將編譯器版本號碼,VS2010對應vc10,VS2012對應vc11,VS2013對應vc12;
  • 如果你的opencv與我的版本不同,只需要將兩個 AdditionalDependencies 標籤內的所有lib的版本號碼修正即可(所有的248改為自己的版本號碼),並在opencv的lib目錄下檢查一下lib名稱是否對應。
通過VS介面建立自己的VS項目屬性工作表

網上一大堆,就不具體說明了。與自己文本編寫屬性工作表不同的是,通過介面建立的屬性工作表要為不同的配置單獨建立,匯入的時候也要針對配置單獨匯入。

屬性管理員 ->展開 項目名 -> 右鍵 Debug | Win32 -> 添加新項目屬性工作表

添加屬性工作表,取名為“opencv248x86.Debug.props”。

屬性管理員 ->展開 Debug | Win32 -> 雙擊 建立的 opencv248x86.Debug 開啟屬性頁面 -> VC++ 目錄

編輯 包含目錄 一欄,添加opencv的include路徑,例如我的是 D:\Program Files\opencv\build\include;編輯 庫目錄 一欄,添加opencv的lib路徑,例如我的是 D:\Program Files\opencv\build\x86\vc12\lib 。

Note

 

將游標移到編輯框會在右邊出現小下拉三角,點擊小三角,再選擇編輯開啟直接選取視窗選擇對應路徑。如果直接粘貼則粘貼在現有內容前面用分號隔開,否則會失去繼承性。

Note

 

庫目錄 一欄選擇opencv的lib路徑時,如果工程是64位則選擇opencv的x64目錄,如果是32位則選擇x86。Visual Studio的版本與編譯器版本號碼的對應關係是:VS2010 -> vc10, VS2012 -> vc11, VS2013 -> vc12,選擇目錄的時候注意自己的VS工程版本。

在屬性頁面 -> 連結器 -> 輸入 -> 附加依賴項 -> 編輯。添加下面的lib列表:

opencv_calib3d248d.libopencv_contrib248d.libopencv_core248d.libopencv_features2d248d.libopencv_flann248d.libopencv_gpu248d.libopencv_highgui248d.libopencv_imgproc248d.libopencv_legacy248d.libopencv_ml248d.libopencv_nonfree248d.libopencv_objdetect248d.libopencv_ocl248d.libopencv_photo248d.libopencv_stitching248d.libopencv_superres248d.libopencv_ts248d.libopencv_video248d.libopencv_videostab248d.lib

確定兩次後完成Debug版本的屬性工作表編輯。

同樣依照上面的步驟編寫Release版本的屬性工作表,唯一不同的是在“附加依賴項”中填入的是Release版本的lib列表:

opencv_calib3d248.libopencv_contrib248.libopencv_core248.libopencv_features2d248.libopencv_flann248.libopencv_gpu248.libopencv_highgui248.libopencv_imgproc248.libopencv_legacy248.libopencv_ml248.libopencv_nonfree248.libopencv_objdetect248.libopencv_ocl248.libopencv_photo248.libopencv_stitching248.libopencv_superres248.libopencv_ts248.libopencv_video248.libopencv_videostab248.lib

Tip

 

*d.lib的是Debug版本lib,*.lib的是Release版本lib。

Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.