VS2013+openCV3.0無腦配置方法+解決警告問題【windows平台】
本文介紹如何配置VS+openCV環境,並解決“opencv 3.0 warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為 Unicode 格式以防止數據丟失的”警告
參考博客:
http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html
下載 openCV
下載 Opencv for Windows 最新版本,本文是 Opencv 3.00。雙擊后會出現解壓提示,實際上就是“安裝”了,路徑填寫為 D:/Program Files,然后確定。
D:/Program Files 可以為任意自己希望opencv安裝的路徑,解壓完成后,會在你所填目錄中新增一個 opencv文件夾, 里面就是opencv的所有內容了。例如按照我的路徑,解壓完成后Opencv就在 D:/Program Files/opencv 里面了。
配置環境變量
在系統變量里面新建變量,名為 OPENCV ,值為自己解壓opencv路徑下的build路徑,如 D:\Program Files\opencv\build。
Tip
這一步是方便以后如果opencv路徑改變了,只需要修改此變量就可以了,而不必做大范圍修改。
在系統變量里面編輯 Path 變量,在末尾添加 ;%OPENCV%\x86\vc12\bin 。
x86和x64分別表示32bit和64bit的VS工程,根據自己的工程來修改,否則雖編譯成功但會運行錯 誤;vc10, vc11, vc12 分別表示VS2010, VS2012, VS2013的Visual Studio使用的編譯器版本,根據自己的VS版本來填寫正確的編譯器版本號。
環境變量設置好后最好注銷(重啟)一下系統,可能有的系統環境變量不會立即生效,而導致一系列路徑相關的問題。
編寫Opencv的VS工程容屬性表
在opencv根目錄(例如 D:\Program Files\opencv)下新建VS屬性表文件 opencv300.props,或者直接下載我的 opencv300.props(點擊下載) 屬性表文件。
opencv300.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;$(OPENCV)\x86\vc12\staticlib;$(LibraryPath)</LibraryPath>
<LibraryPath Condition="'$(Platform)'=='X64'">$(OPENCV)\x64\vc12\lib;$(OPENCV)\x64\vc12\staticlib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup>
<Link Condition="'$(Configuration)'=='Debug'">
<AdditionalDependencies>opencv_ts300d.lib;opencv_world300d.lib;IlmImfd.lib;libjasperd.lib;libjpegd.lib;libpngd.lib;libtiffd.lib;libwebpd.lib;opencv_calib3d300d.lib;opencv_core300d.lib;opencv_features2d300d.lib;opencv_flann300d.lib;opencv_highgui300d.lib;opencv_imgcodecs300d.lib;opencv_imgproc300d.lib;opencv_ml300d.lib;opencv_objdetect300d.lib;opencv_photo300d.lib;opencv_shape300d.lib;opencv_stitching300d.lib;opencv_superres300d.lib;opencv_ts300d.lib;opencv_video300d.lib;opencv_videoio300d.lib;opencv_videostab300d.lib;zlibd.lib;%(AdditionalDependencies)
</AdditionalDependencies>
</Link>
<Link Condition="'$(Configuration)'=='Release'">
<AdditionalDependencies>opencv_ts300.lib;opencv_world300.lib;IlmImf.lib;ippicvmt.lib;libjasper.lib;libjpeg.lib;libpng.lib;libtiff.lib;libwebp.lib;opencv_calib3d300.lib;opencv_core300.lib;opencv_features2d300.lib;opencv_flann300.lib;opencv_highgui300.lib;opencv_imgcodecs300.lib;opencv_imgproc300.lib;opencv_ml300.lib;opencv_objdetect300.lib;opencv_photo300.lib;opencv_shape300.lib;opencv_stitching300.lib;opencv_superres300.lib;opencv_ts300.lib;opencv_video300.lib;opencv_videoio300.lib;opencv_videostab300.lib;zlib.lib;%(AdditionalDependencies)
</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>
這份屬性表為opencv3.0的VS2013工程屬性表,兼容64位和32位平台,兼容Debug和Release配置。詳細解釋看后文,后面在VS工程中配置Opencv只需要導入這份屬性表就可以了。
新建VS測試工程
文件 -> 新建 -> 項目 -> Visual C++ -> Win32 控制台應用程序(輸入名稱test)
確定 -> 下一步 -> 附加選項選“空項目” -> 完成
VS內配置Opencv
這里用VS屬性表的方式將Opencv配進工程,每次只需要添加屬性表即可完成配置,比手工界面配置方便很多。
屬性管理器 -> 右鍵 “test”(工程名) -> 添加現有屬性表
找到之前新建或者下載的屬性表( D:\Program Files\opencv\opencv300.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了。
解決警告


