最近準備學習opencv,就裝了一個沒有contrib模塊的版本,然後就不能使用SURF,後來又搗鼓了好久終於重新裝上了。爲此,準備給自己寫一份安裝的記錄,以備以後用到。
本文借鑑並且轉載自http://blog.csdn.net/linshuhe1/article/details/51221015的Opencv學習筆記(八)--opencv3.1.0+opencv_contrib編譯(windows)文章
一、下載opencv
從官網上下載:https://opencv.org/releases.html
下載完之後解壓到指定文件夾,獲得如下結果
二、下載opencv_contrib源碼:https://github.com/opencv/opencv_contrib/releases/tag/3.3.0
因爲安裝的opencv是3.3.0版本的,所以contrib最好也選擇3.3.0版本,該網址鏈接的就是3.3.0版本的地址,如果是其他版本的可以從
https://github.com/opencv/opencv_contrib/releases選擇對應版本
下載後,解壓得到如下結果
三.下載cmake-gui工具:http://www.cmake.org/cmake/resources/software.html
cmake安裝教程網上很多,百度搜索一下就可以
四、使用cmake生成OpenCV.sln:
1.打開cmake-gui\bin目錄下的cmake-gui.exe工具
2.填寫相應參數,包括:OpenCV源碼目錄和OpenCV.sln工程的導出目錄,開始導出OpenCV.sln工程:
第一次導出時需要設置後面用來編譯此OpenCV.sln工程的VS的版本,這裏我用的是VS 2013:
雖然是64位系統,但是一般32位編譯的文件居多,所以在我安裝的時候選擇的是32位編譯。可以根據具體情況選擇,也可以選擇64位的。
設置完成之後點擊“Generate”開始生成工程:
3.第一次編譯完成之後,我們需要將額外的opencv_contrib加到工程中進行第二次編譯,在配置表中 到“OPENCV_EXTRA_MODULES_PATH”,設置其參數值爲open_contrib源碼包中的modles目錄,我的目錄是“E:\OpenCV\tools\opencv_contrib-master\modules”:
設置完成之後點擊Configure進行配置,不報錯的話就進行第二次編譯:
第二次編譯一般很快就能完成:
編譯完成後,我們在資源管理器下查看上面設置的文件輸出目錄,發現目錄下多出了很多文件,其實就是OpenCV.sln工程文件:
五、用VS打開OpenCV.sln工程,編譯生成Debug和Release庫:
(記得用管理員身份打開vs2013,編譯會比較順利點)
1.用VS 2015打開OpenCV.sln工程,在解決方案中可以查看工程目錄:
在生成的解決方案opencv中,一般有兩種版本build並且install opencv:Debug 和 Release版本,它們之間的區別不大瞭解 ,具體百度。在本文中,我使用的是Debug,選擇的編譯平臺是32位。
結束後,在工程目錄下的install目錄中,可以看到生成一下文件:
六、把新的庫文件配置到到項目中
1、VC++目錄-->包含目錄,添加:D:\opencv3\opencv\mybuild\install\include
2、VC++目錄-->庫目錄,添加:D:\opencv3\opencv\mybuild\install\x86\vc12\lib
D:\opencv3\opencv\mybuild\install\x86\vc12\staticlib
3、鏈接器-->輸入-->附加依賴項,添加: (下面添加的Debug的版本,注意添加的庫與編譯選項要一致)
opencv_calib3d330d.lib
opencv_core330d.lib
opencv_dnn330d.lib
opencv_features2d330d.lib
opencv_flann330d.lib
opencv_highgui330d.lib
opencv_imgcodecs330d.lib
opencv_imgproc330d.lib
opencv_ml330d.lib
opencv_objdetect330d.lib
opencv_photo330d.lib
opencv_shape330d.lib
opencv_stitching330d.lib
opencv_superres330d.lib
opencv_video330d.lib
opencv_videoio330d.lib
opencv_videostab330d.lib
好啦,整個過程完結,可以開始使用opencv啦。
編譯程序時候出錯:
1>LINK : fatal error LNK1104: 無法打開文件“MSVCRT.lib”
解決方法:
VC++目錄-->庫目錄,添加:G:\Program Files (x86)\VS2013\VC\lib(改成自己的vs2013的vc的lib文件地址),編譯通過