標籤:
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了。
解決警告 編譯的時候會出現“opencv 3.0 warning C4819: 該檔案包含不能在當前字碼頁(936)中表示的字元。請將該檔案儲存為 Unicode 格式以防止資料丟失的”的警告。解決辦法就是找到警告的檔案,然後用notepad++轉碼為ANSI
VS2013+openCV3.0無腦配置方法+解決警告問題【windows平台】