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


Toggle navigation                                                                            Navigation

Toggle navigation                                                                                                            

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

  •        2014-02-04

  •            Yuanbo She

  •        CV

  •                cv,                opencv,

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

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

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

目錄

配置

下載安裝軟件

下載 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

env1

Tip

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

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

env1

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)

step1

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

step2

VS內配置Opencv

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

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

step3

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

step4

測試

解決方案資源管理器 -> 源文件(右鍵)-> 添加 -> 新建項

step5

Visual C++ -> C++文件:輸入名稱test點添加

step6

粘貼下面的代碼,保存:

#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文件夾)

step7

按F5調試程序,如果你的圖片出來了就OK了。

step8

進階

直接文本編寫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%環境變量,則只需要修改 IncludePathLibraryPath 所指三個標籤,用絕對路徑代替 $(OPENCV)

  • 如果你的Visual Studio版本與我的不同,則需要修改 LibraryPath 所指兩個標籤的將編譯器版本號,VS2010對應vc10,VS2012對應vc11,VS2013對應vc12;

  • 如果你的opencv與我的版本不同,只需要將兩個 AdditionalDependencies 標籤內的所有lib的版本號修正即可(所有的248改爲自己的版本號),並在opencv的lib目錄下檢查一下lib名稱是否對應。

通過VS界面建立自己的VS項目屬性表

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

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

props1

添加屬性表,取名爲“opencv248x86.Debug.props”。

props2

屬性管理器 ->展開 Debug | Win32 -> 雙擊 新建的 opencv248x86.Debug 打開屬性頁面 -> VC++ 目錄

props3

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

props4

Note

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

Note

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

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

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

props5

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

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

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

Tip

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

友薦雲推薦            

                Categories            

                Tags            

pcduino ,                cv ,                人生 ,                qt ,                reStructuredText ,                opencv ,                hadoop ,                ubuntu_for_ros ,                exbotxi ,                pelican ,                sphinx ,                ros ,                mapreduce ,                turtlebot ,                github ,                xtion ,                kinect ,                python ,                others ,                web ,                big data ,

                Dates            

Links

Copyright 2014 by Yuanbo She

Powered by Pelican ...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章