更新:現在contrib庫必須要opencv3.1以上才能支持編譯通過了。
方法和步驟還是和本篇文章一樣。
##############################################################################
因為opencv3.0默認安裝中沒有加入SIFT、SURF等點特征檢測,一百度下一跳,原來這玩意還弄了個其他的庫,還只能在GitHub上才能弄到,這兩天弄opencv3的contrib庫,遇到了一些問題,為了讓大家更好、更快用上contrib庫,根據谷歌百度的幾個問題,現分享給大家完整流程,也歡迎大家與我討論其他opencv方面的問題。
一、下載安裝准備
- github desktop 下載 windows 7or Later : https://desktop.github.com
- opencv3.0.0 下載 Opencv for Windows:http://opencv.org/downloads.html
- OpenCV_contrib 下載 :https://github.com/Itseez/opencv_contrib
- cmake_gui下載 Windows (Win32 Installer):http://www.cmake.org/download/
下載對應版本的以上軟件:opencv3.0.0可以直接解壓,我的路徑為D:\opencv3,解壓完成后會生成D:\opencv3\opencv的目錄形式。
github軟件會在線直接安裝,在桌面可以直接使用Git Shell ,($ cd D:\CVRS_Code\GitHub 也可以設定opencv_contrib下載的其他路徑),輸入以下命令下載opencv_contrib到指定目錄。
1 D:\CVRS_Code\GitHub> git clone https://github.com/Itseez/opencv_contrib.git
cmake_gui 軟件直接安裝。OK,現在准備工作就緒。
二、利用CMake編譯opencv和opencv_contrib庫
- 打開cmake_gui.
- 把opencv/source文件夾中的CMakeLists.txt文件直接拖入cmake_gui中,where is the source code自動選擇opencv的安裝目錄為D:\opencv3\opencv\source.
- 更改where to build the binaries 目錄,即我們將要編譯的目錄,我的是:D:\opencv3\opencv\Mybuild
- 點擊configure,點擊確定,選擇默認編譯器,點擊finish。cmake將開始進行編譯,如果一切順利將最后顯示Configure Done!表明我們configure完成,在出現的紅色區域內找到OPENCV,子目錄中找到OPENCV_EXTRA_MODULES_PATH,設置它的值為opencv_contrib/modules的絕對路徑,在這里我的設置為D:\opencv3\opencv\sources\modules\opencv_contrib\modules(之前把opencv_contrib放在source文件夾外面,編譯不成功,所以這里只介紹我的方法)。
- 可以再紅色區域內再次去掉BUILD_OPENCV 和WITH_CUDA等有些硬件不支持的庫,再次點擊configure,正常情況會成功顯示Configure Done! 然后點擊Generate生成。
三、利用VS編譯Debug和Release庫
- 打開D:\opencv3\opencv\mybuild目錄下的OpenCV.sln
- 在CMake Target中找到 INSTALL ,在Debug和Release的條件中分別右鍵選擇build,生成debug和release庫,這個過程大概持續10-20分鍾。
- 我們會在D:\opencv3\opencv\Mybuild\install文件夾中看到這幾個文件目錄
--bin --etc --include --opencv --opencv2 --x86 --vc10 --bin --lib --staticlib --LICENSE --OpenCVConfig.cmake --OpenCVConfig-version.cmake
四、Windows和VS中配置Opencv3
- 添加環境變量PATH D:\opencv3\opencv\Mybuild\install\x86\vc10\bin ,記得多個需要用分號(;)隔開。
- 任意建立一個新的工程,打開視圖(View)->Other Windows->Property Manager。點擊Debug,雙擊Microsoft.Cpp.Win32.user,在其中設置:(以下設置完成之后,重復2的操作,選擇Release,同樣方式設置Microsoft.Cpp.Win32.user)
- VC++目錄-->包含目錄,添加:
- D:\opencv3\opencv\Mybuild\install\include
- D:\opencv3\opencv\Mybuild\install\include\opencv
- D:\opencv3\opencv\Mybuild\install\include\opencv2
- VC++目錄-->庫目錄,添加:
D:\opencv3\opencv\Mybuild\install\x86\vc10\lib - 鏈接器-->輸入-->附加依賴項,添加:
opencv_aruco300d.lib
opencv_bgsegm300d.lib
opencv_bioinspired300d.lib
opencv_calib3d300d.lib
opencv_ccalib300d.lib
opencv_core300d.lib
opencv_dnn300d.lib
opencv_face300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_highgui300d.lib
opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_line_descriptor300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_optflow300d.lib
opencv_photo300d.lib
opencv_reg300d.lib
opencv_rgbd300d.lib
opencv_saliency300d.lib
opencv_shape300d.lib
opencv_stereo300d.lib
opencv_stitching300d.lib
opencv_superres300d.lib
opencv_surface_matching300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib
opencv_xfeatures2d300d.lib
opencv_ximgproc300d.lib
opencv_xobjdetect300d.lib
opencv_xphoto300d.lib
opencv_aruco300.lib
opencv_bgsegm300.lib
opencv_bioinspired300.lib
opencv_calib3d300.lib
opencv_ccalib300.lib
opencv_core300.lib
opencv_dnn300.lib
opencv_face300.lib
opencv_features2d300.lib
opencv_flann300.lib
opencv_highgui300.lib
opencv_imgcodecs300.lib
opencv_imgproc300.lib
opencv_line_descriptor300.lib
opencv_ml300.lib
opencv_objdetect300.lib
opencv_optflow300.lib
opencv_photo300.lib
opencv_reg300.lib
opencv_rgbd300.lib
opencv_saliency300.lib
opencv_shape300.lib
opencv_stereo300.lib
opencv_stitching300.lib
opencv_superres300.lib
opencv_surface_matching300.lib
opencv_video300.lib
opencv_videoio300.lib
opencv_videostab300.lib
opencv_xfeatures2d300.lib
opencv_ximgproc300.lib
opencv_xobjdetect300.lib
opencv_xphoto300.lib
五、遇到相關問題及解決方法
1.在cmake第二次進行編譯時候,可能出現了cmake報錯:
-- ICV: Downloading ippicv_windows_20140513.tgz... CMake Error at 3rdparty/ippicv/downloader.cmake:71 (file): file DOWNLOAD HASH mismatch for file: [/tmp/dpkg-mkdeb.NSafYgjHYT/src/opencv-3.0.0-alpha/3rdparty/ippicv/downloads/linux-d80cb24f3a565113a9d6dc56344142f6/ippicv_linux_20140513.tgz] expected hash: [d80cb24f3a565113a9d6dc56344142f6] actual hash: [20d82f68c11c137093b960677093fdac] Call Stack (most recent call first): 3rdparty/ippicv/downloader.cmake:108 (_icv_downloader) cmake/OpenCVFindIPP.cmake:212 (include) cmake/OpenCVFindLibsPerf.cmake:12 (include) CMakeLists.txt:449 (include)
這種情況就可以在http://sourceforge.net/projects/opencvlibrary/files/3rdparty/ippicv/ 網站手動下載ippicv壓縮包,放到D:\opencv3\opencv\sources\3rdparty\ippicv\downloads\windows-b59f865d1ba16e8c84124e19d78eec57 文件夾中,然后再重新編譯cmake。
六、參考資料
【1】https://github.com/Itseez/opencv_contrib/blob/master/README.md 這個是用cmake-gui編譯opencv_contrib的英文說明文檔。
【2】http://segmentfault.com/a/1190000003496009 poemqiong 博主的opencv_contrib文章參考
【3】http://stackoverflow.com 可以在國外的這個論壇上尋找你遇到各種安裝問題,一般解答都挺有效的。