【caffe】windows下vs2013+opencv3.2.0+opencv_contrib(包含dnn)+cmake3.8编译与配置
opencv目前已經(jīng)支持caffe訓(xùn)練模型的讀取,以及使用模型進(jìn)行預(yù)測(cè),這個(gè)功能是dnn模塊實(shí)現(xiàn)的,而這個(gè)模塊位于opencv_contrib中,此前編譯的opencv3.2.0并沒有將opencv_contrib中的模塊加進(jìn)來。因此,這里重新將opencv_contrib加入到opencv3.2.0進(jìn)行編譯。
這里假定已經(jīng)安裝了vs2013(或vs2015)和cmake等,沒有安裝的要先行安裝好,再繼續(xù)接下來的操作。
1、下載opencv和opencv_contrib源碼
1.1 下載opencv3.2.0源碼(https://github.com/opencv/opencv/releases/tag/3.2.0)。
1.2 下載opencv_contrib源碼(https://github.com/opencv/opencv_contrib/releases)
注意:一定要下載和OpenCV源碼版本一致的版本(這里均是3.2.0版本)。
2、Cmake配置與編譯
2.1 將opencv源碼和opencv_contrib源碼均解壓到編譯文件目錄下(這里是D:\Libraries\OpenCV320)。
2.2 在編譯文件夾下新建opencv320-build和msvc2013_64文件夾,分別作為編譯目錄和安裝目錄。
打開Cmake,添加源碼目錄和編譯目錄,configure,選擇Visual Studio 12 2013 Win64作為生成工具,finish,如下圖。(如報(bào)錯(cuò),請(qǐng)參考第5部分的常見問題與解決方案)
2.3 在OPENCV_EXTRA_MODULES_PATH選項(xiàng)中添加opencv_contribute中的modules路徑。
同時(shí),修改安裝路徑:
添加debug后綴,以避免安裝時(shí),release版本的將debug版本的覆蓋掉。
繼續(xù)configure,成功后,點(diǎn)generate,生成編譯工程成功。(如報(bào)錯(cuò),請(qǐng)參考第5部分的常見問題與解決方案)
3、vs2013編譯與安裝
generate成功以后,在opencv320-build文件夾下,會(huì)生成如下眾多文件,打開OpenCV.sln。
分別在Debug和Release環(huán)境下,先BUILD->Build Solution,再將INSTALL設(shè)為啟動(dòng)項(xiàng),BUILD->Project Only->Build Only Install。
編譯安裝成功,在msvc2013_64文件夾下,會(huì)看到如下文件夾:
4、配置opencv的環(huán)境。
4.1 設(shè)置環(huán)境變變量,將安裝文件夾下的bin文件夾目錄添加到環(huán)境變量路徑中。
4.2 在編譯文件夾下添加opencv320.props文件(具體位置和名稱可以根據(jù)需要設(shè)定),并向該文件中添加如下內(nèi)容(主要是頭文件和靜態(tài)庫),保存。在vs2013中使用時(shí)opencv時(shí),只需要將改文件添加到工程的property manager中即可。
<?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>D:\Libraries\OpenCV320\msvc2013-64\include;$(IncludePath)</IncludePath> <LibraryPath Condition="'$(Platform)'=='X64'">D:\Libraries\OpenCV320\msvc2013-64\x64\vc12\lib;$(LibraryPath)</LibraryPath> </PropertyGroup> <ItemDefinitionGroup> <Link Condition="'$(Configuration)'=='Debug'"> <AdditionalDependencies>opencv_calib3d320d.lib;opencv_core320d.lib;opencv_cudaarithm320d.lib;opencv_cudabgsegm320d.lib;opencv_cudacodec320d.lib;opencv_cudafeatures2d320d.lib;opencv_cudafilters320d.lib;opencv_cudaimgproc320d.lib;opencv_cudalegacy320d.lib;opencv_cudaobjdetect320d.lib;opencv_cudaoptflow320d.lib;opencv_cudastereo320d.lib;opencv_cudawarping320d.lib;opencv_cudev320d.lib;opencv_features2d320d.lib;opencv_flann320d.lib;opencv_highgui320d.lib;opencv_imgcodecs320d.lib;opencv_imgproc320d.lib;opencv_ml320d.lib;opencv_objdetect320d.lib;opencv_photo320d.lib;opencv_shape320d.lib;opencv_stitching320d.lib;opencv_superres320d.lib;opencv_video320d.lib;opencv_videoio320d.lib;opencv_videostab320d.lib;opencv_aruco320d.lib;opencv_bgsegm320d.lib;opencv_bioinspired320d.lib;opencv_ccalib320d.lib;opencv_datasets320d.lib;opencv_dnn320d.lib;opencv_dpm320d.lib;opencv_face320d.lib;opencv_fuzzy320d.lib;opencv_line_descriptor320d.lib;opencv_optflow320d.lib;opencv_phase_unwrapping320d.lib;opencv_plot320d.lib;opencv_reg320d.lib;opencv_rgbd320d.lib;opencv_saliency320d.lib;opencv_stereo320d.lib;opencv_structured_light320d.lib;opencv_superres320d.lib;opencv_surface_matching320d.lib;opencv_text320d.lib;opencv_tracking320d.lib;opencv_xfeatures2d320d.lib;opencv_ximgproc320d.lib;opencv_xobjdetect320d.lib;opencv_xphoto320d.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <Link Condition="'$(Configuration)'=='Release'"> <AdditionalDependencies>opencv_calib3d320.lib;opencv_core320.lib;opencv_cudaarithm320.lib;opencv_cudabgsegm320.lib;opencv_cudacodec320.lib;opencv_cudafeatures2d320.lib;opencv_cudafilters320.lib;opencv_cudaimgproc320.lib;opencv_cudalegacy320.lib;opencv_cudaobjdetect320.lib;opencv_cudaoptflow320.lib;opencv_cudastereo320.lib;opencv_cudawarping320.lib;opencv_cudev320.lib;opencv_features2d320.lib;opencv_flann320.lib;opencv_highgui320.lib;opencv_imgcodecs320.lib;opencv_imgproc320.lib;opencv_ml320.lib;opencv_objdetect320.lib;opencv_photo320.lib;opencv_shape320.lib;opencv_stitching320.lib;opencv_superres320.lib;opencv_video320.lib;opencv_videoio320.lib;opencv_videostab320.lib;opencv_aruco320.lib;opencv_bgsegm320.lib;opencv_bioinspired320.lib;opencv_ccalib320.lib;opencv_datasets320.lib;opencv_dnn320.lib;opencv_dpm320.lib;opencv_face320.lib;opencv_fuzzy320.lib;opencv_line_descriptor320.lib;opencv_optflow320.lib;opencv_phase_unwrapping320.lib;opencv_plot320.lib;opencv_reg320.lib;opencv_rgbd320.lib;opencv_saliency320.lib;opencv_stereo320.lib;opencv_structured_light320.lib;opencv_superres320.lib;opencv_surface_matching320.lib;opencv_text320.lib;opencv_tracking320.lib;opencv_xfeatures2d320.lib;opencv_ximgproc320.lib;opencv_xobjdetect320.lib;opencv_xphoto320.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>
5、編譯中常見的問題與解決方案:
a) Cmake編譯,加入opencv_contrib中的modules后,進(jìn)行configure,有些模塊會(huì)報(bào)錯(cuò),只需要將相應(yīng)的模塊勾選掉繼續(xù)configure即可。
b) 如果編譯的過程中出現(xiàn)反復(fù),雖然configure成功,但是generate失敗,或者generate成功,但是使用vs編譯時(shí)出錯(cuò)。最好的辦法是將此前的文件都刪除,重新解壓源碼,進(jìn)行Cmake配置和編譯。
c) 如果此前系統(tǒng)中已經(jīng)配置過opencv,建議將opencv的執(zhí)行目錄從環(huán)境變量里清除掉。
d) Cmake配置的過程中要保證網(wǎng)絡(luò)的通暢,如果由于長時(shí)間沒有下載第三方依賴庫文件不成功而報(bào)錯(cuò),可以直接在谷歌或度娘上搜索相關(guān)文件,下載下來手動(dòng)放到相關(guān)文件夾下,再繼配置即可。
e) opencv和opencv_contrib版本一定要一致,否則配置和編譯會(huì)出錯(cuò)。
至此,編譯成功,下一篇將介紹,如何在dnn中調(diào)用caffe的訓(xùn)練模型。
----------------------
參考:
[1]?http://docs.opencv.org/3.2.0/de/d25/tutorial_dnn_build.html
[2]?http://answers.opencv.org/question/147923/build-error-open-cv32-with-extra-libs/
2017.07.19
總結(jié)
以上是生活随笔為你收集整理的【caffe】windows下vs2013+opencv3.2.0+opencv_contrib(包含dnn)+cmake3.8编译与配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【caffe】mnist数据集lenet
- 下一篇: 【caffe】OpenCV Load c