在以前的幾篇文章中,我提到了在Android、Linux中編譯opencv + opencv_contrib,這篇文章主要講在Windows中編譯opencv + opencv_contrib。html
將下載獲得的OpenCV Windows包解壓,目錄爲opencv,而後將下載的OpenCV_Contrib包解壓放入opencv目錄下,新建new_build文件夾(用來放編譯以後結果):git
打開安裝以後的cmake,在where is the source code中選擇openCV的源代碼目錄:F:\opencv\sources;在where to build the binaries中選擇編譯爲Visual Studio項目的目錄:F:\opencv\new_build(這裏我選擇剛剛特意創建的new_build目錄),以下圖所示:github
點擊Configure按鈕後,彈出對話框,選擇編譯器,根據本地計算機的CPU架構,這裏特別要注意的是,本身機器上是否裝有相應的VS版本,若是沒有裝,仍是要編譯就會出錯,多是找不到對應的工具緣由,以及選擇X86和X64),這裏用的是VS 2015。算法
設置完成以後點擊「Generate」開始生成工程,.第一次編譯完成以後,咱們須要將額外的opencv_contrib加到工程中進行第二次編譯,在配置表中找到「OPENCV_EXTRA_MODULES_PATH」,設置其參數值爲open_contrib源碼包中的modles目錄,個人目錄是「F:\opencv\opencv_contrib\modules」:shell
再次點擊「Generate」進行第二次編譯:api
這時候咱們已經能夠看見用cmake工具編譯獲得的OpenCV.sln:架構
用VS 2015打開OpenCV.sln工程,在解決方案中能夠查看工程目錄:app
編譯生成debug版本的庫,記得在此以前要選擇編譯的平臺信息,這就是編譯生成debug版本和release版本的區別,也能夠選擇release,由於本身的工程可能要用到相應的動態連接庫:ide
在解決方案中選中工程,右鍵選擇從新生成解決方案:工具
編譯成功:
.找到CMakeTargets中的INSTALL,而後右鍵選擇「僅限於項目」-->「僅生成INSTALL」:
完成編譯後,Release模式下同理。此時,有了install目錄。該目錄包含了咱們須要的頭文件、庫文件。
VC++目錄-->包含目錄,添加:
E:\OpenCV320\opencv\new_build\install\include
VC++目錄-->庫目錄,添加:
E:\OpenCV320\opencv\new_build\install\x64\vc14\lib
連接器-->輸入-->附加依賴項,添加: (注意添加的庫與編譯選項要一致,須要注意debug比release的文件名多了個d)
opencv_aruco320.lib
opencv_aruco320d.lib
opencv_bgsegm320.lib
opencv_bgsegm320d.lib
opencv_bioinspired320.lib
opencv_bioinspired320d.lib
opencv_calib3d320.lib
opencv_calib3d320d.lib
opencv_ccalib320.lib
opencv_ccalib320d.lib
opencv_core320.lib
opencv_core320d.lib
opencv_datasets320.lib
opencv_datasets320d.lib
opencv_dnn320.lib
opencv_dnn320d.lib
opencv_dpm320.lib
opencv_dpm320d.lib
opencv_face320.lib
opencv_face320d.lib
opencv_features2d320.lib
opencv_features2d320d.lib
opencv_flann320.lib
opencv_flann320d.lib
opencv_fuzzy320.lib
opencv_fuzzy320d.lib
opencv_highgui320.lib
opencv_highgui320d.lib
opencv_imgcodecs320.lib
opencv_imgcodecs320d.lib
opencv_line_descriptor320.lib
opencv_line_descriptor320d.lib
opencv_ml320.lib
opencv_ml320d.lib
opencv_objdetect320.lib
opencv_objdetect320d.lib
opencv_optflow320.lib
opencv_optflow320d.lib
opencv_phase_unwrapping320.lib
opencv_phase_unwrapping320d.lib
opencv_photo320.lib
opencv_photo320d.lib
opencv_plot320.lib
opencv_plot320d.lib
opencv_reg320.lib
opencv_reg320d.lib
opencv_rgbd320.lib
opencv_rgbd320d.lib
opencv_saliency320.lib
opencv_saliency320d.lib
opencv_shape320.lib
opencv_shape320d.lib
opencv_stereo320.lib
opencv_stereo320d.lib
opencv_stitching320.lib
opencv_stitching320d.lib
opencv_structured_light320.lib
opencv_structured_light320d.lib
opencv_superres320.lib
opencv_superres320d.lib
opencv_surface_matching320.lib
opencv_surface_matching320d.lib
opencv_text320.lib
opencv_text320d.lib
opencv_tracking320.lib
opencv_tracking320d.lib
opencv_video320.lib
opencv_video320d.lib
opencv_videoio320.lib
opencv_videoio320d.lib
opencv_videostab320.lib
opencv_videostab320d.lib
opencv_xfeatures2d320.lib
opencv_xfeatures2d320d.lib
opencv_ximgproc320.lib
opencv_ximgproc320d.lib
opencv_xobjdetect320.lib
opencv_xobjdetect320d.lib
opencv_xphoto320.lib
opencv_xphoto320d.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib
這樣,咱們就能夠在VS中使用OpenCV了。
須要提到的一個點,所須要使用Sift等算法,須要引入xfeatures2d命名空間:
using namespace xfeatures2d;