vs編譯opencv
⑴ VS2013怎麼配置opencv才能不用每次都重新配置一遍
說白了就是將VS第一次配置OpenCV的項目屬性表保存下來,每次新建項目時引用即可。
目錄
解壓OpenCV
配置系統環境變數
創建VS新項目
添加項目屬性表
配置項目屬性表
引用項目屬性表
聲明:
以
下展示內容,配置方案為OpenCV2.4.9+VS2013+win10+x64,但方法適用於OpenCV2.4.8、OpenCV2.4.9、
OpenCV2.4.10,適用於win7、win8.1、win10,適用於x64和x84(下面會講解如何對應修改)。如果問為什麼適用?因為我都試
過啊~
會一次性配置的知友請直接看第四部分和第六部分,因為其餘部分跟一次性配置是一樣的。
一、解壓OpenCV
比如本人解壓在G盤根目錄下
二、配置系統環境變數
打開「系統屬性」,點擊「環境變數」
雙擊Path的值部分
填上OpenCV的bin路徑
注意:
1、此時電腦最好重啟下。
2、如果你的應用程序是win32控制台應用程序,則選擇x32的路徑;如果你的應用程序是win64控制台應用程序,則選擇x64的路徑。(感謝 @吳信仰 的指正和解惑。)
3、vc10, vc11, vc12 分別表示VS2010, VS2012, VS2013的Visual Studio使用的編譯器版本,根據自己的VS版本來填寫正確的編譯器版本號。
三、創建VS新項目
四、添加項目屬性表
「視圖」打開「屬性窗口」
右擊「Debug|Win32」點擊「添加新項目屬性表」(如果想在Release模式下使用OpenCV,右擊Release|Win32,同理可得)
給屬性表命名
五、配置項目屬性表
雙擊創建的屬性表
5.1添加包含目錄
5.2添加附加庫目錄
注意:
1、如果你的應用程序是win32控制台應用程序,則選擇x32的路徑;如果你的應用程序是win64控制台應用程序,則選擇x64的路徑。
2、vc10, vc11, vc12 分別表示VS2010, VS2012, VS2013的Visual Studio使用的編譯器版本,根據自己的VS版本來填寫正確的編譯器版本號。
5.3添加附加依賴項
附加依賴項如下:
opencv_imgproc249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_nonfree249d.lib
opencv_objdetect249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_videostab249d.lib
注意:
1、249對應OpenCV2.4.9,其他版本做對應修改。
2、後綴d代表Debug模式,如果是Release模式去掉d。依個人情況選擇Debug模式或者Release模式。
六、引用項目屬性表
打開項目目錄,你會看到如下文件
以後新建項目時,打開屬性管理器,右擊Debug|Win32選擇添加現有屬性表上述文件即可。
========================
以上,應該算VS一次配置永久使用OpenCV了^ ^
編輯於 2016-05-13
12 條評論
感謝
分享
收藏
•
沒有幫助
•
舉報
•
作者保留權利
ZZ Chris
,在野武將
18 人贊同
不同意vczh的做法,遇到需要切換opencv版本的情況太麻煩。
請認准屬性表,一次編寫,到處使用,系統環境變數你都不需要設定,所有設定都寫在屬性表文件中,用的時候在vs里導入屬性表。如果要切換opencv版本,只修改opencv編譯輸出目錄就可以了。
比如OpenCV3.0版的,可以命名為opencv300.props:
<?xml version="1.0" encoding="utf-8"?>
<!--
OpenCV 3.0.0屬性表文件
不用單獨配置環境變數OpenCV
也不用單獨在系統PATH上添加OpenCV可執行路徑
只需要在VisualStudio-"菜單"-"視圖"-"屬性管理器"中添加現有屬性表,添加本文件
使用前請將下面的OpenCVRoot修改為你的OpenCV編譯輸出目錄
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<!-- 請把OpenCVRoot屬性的值替換為你的OpenCV編譯輸出的目標目錄,它包含x64、x86這樣的子目錄 -->
<OpenCVRoot>D:\lib\opencv300\build</OpenCVRoot>
<!-- 指定INCLUDE路徑-->
<IncludePath>$(OpenCVRoot)\include;$(IncludePath)</IncludePath>
<!-- 指定鏈接所需lib目錄-->
<LibraryPath Condition="'$(Platform)'=='Win32'">$(OpenCVRoot)\x86\vc12\lib;$(LibraryPath)</LibraryPath>
<LibraryPath Condition="'$(Platform)'=='X64'">$(OpenCVRoot)\x64\vc12\lib;$(LibraryPath)</LibraryPath>
<!-- 保證系統處於Debug模式時,可以使用相對路徑讀取源代碼目錄下的文件,比如"lena.jpg"而不必是"d:/work/test/test/lena.jpg" -->
<LocalDebuggerWorkingDirectory>$(ProjectDir)</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
<!-- 讓系統PATH臨時包含指定的dll目錄 -->
<LocalDebuggerEnvironment Condition="'$(Platform)'=='Win32'">PATH=%PATH%;$(OpenCVRoot)\x86\vc12\bin</LocalDebuggerEnvironment>
<LocalDebuggerEnvironment Condition="'$(Platform)'=='X64'">PATH=%PATH%;$(OpenCVRoot)\x64\vc12\bin</LocalDebuggerEnvironment>
</PropertyGroup>
<!-- 以下是程序需要載入的lib文件。-->
<ItemDefinitionGroup>
<Link Condition="'$(Configuration)'=='Debug'">
<AdditionalDependencies>opencv_ts300d.lib;opencv_world300d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<Link Condition="'$(Configuration)'=='Release'">
<AdditionalDependencies>opencv_ts300.lib;opencv_world300.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>
⑵ 為什麼要使用cmake+VS重新編譯的opencv庫
使用opencv需要編譯源碼,得到庫文件。可以用cmake構建項目後編譯,也可以直接用官方提供的編譯好的版本。
官方提供的編譯庫一般只是標准版本,可能與某些庫並不兼容,比如官方提供的編譯好的版本與opengl就不兼容,這時就只能自己構建項目後編譯。
在用cmake生成工程文件的時候,設置當中有WITH_OPENGL,WITH_QT等選項,你想支持哪個庫只需要選擇即可。
當然,一般使用的話,用官方提供的庫即可。OpenCV2.3.1版本就提供編譯好的庫,可以直接設置使用
⑶ opencv +vs2010問題,編譯出現100多錯誤。詳情見補充。
如果配置沒錯的話,看一下錯誤提示
則文件路徑出錯了;
正確的是:cvLoadImage("C:\\Users\\Hu\\Desktop\\matlab\\1.jpg",1)
或cvLoadImage("C:/Users/Hu/Desktop/matlab/1.jpg",1)