參考CSDN文章https://blog.csdn.net/qq_15947787/article/details/78534272
參考簡書文章https://www.jianshu.com/p/5520fdb6dbae?from=singlemessage
此文作者說 通過查看cuda官方手冊,目前Cuda支持的VS工具集只有15.0和15.6,但是新下載的VS2017一般都是15.7,因此會出現無法編譯的情況
VS2017最新版和CUDA坑爹的兼容性,試了好多次都失敗了 ,以下配置為vs2017下的截圖 但在vs2015步驟完全一樣。
走了一天的坑,最后放棄了使用vs2017從而下載vs015
VS2015 專業版下載鏈接
http://download.microsoft.com/download/B/8/9/B898E46E-CBAE-4045-A8E2-2D33DD36F3C4/vs2015.pro_chs.iso
VS2015 企業版下載鏈
http://download.microsoft.com/download/B/8/F/B8F1470D-2396-4E7A-83F5-AC09154EB925/vs2015.ent_chs.iso
VS2015 社區版下載鏈接
http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB464C/vs2015.com_chs.iso
在opencv中sift、surf等一些算法被去除,使用modules不再是默認安裝的,它們均被集中在opencv_contrib中,在配置OpenCV時需要同OpenCV源碼一塊編譯,需要重新下載並進行編譯,下載contrib鏈接 https://github.com/opencv/opencv_contrib
因為要使用opencv中的GPU對程序進行加速 所以需要下載cuda,可以cuda官網查看與自己,這里我下載的是cuda8.0
此外還需要下載CMake編譯工具對opecv庫重新進行編譯 加入GPU支持和一些額外的模塊庫
下載好CMake、OpenCV庫、cuda和opecv_contrib后打開CMake
在Where is the source code里面選擇opencv文件目錄下的sources文件夾
在opencv文件目錄下創建build-vs2017(文件名可以自己命名)
在Where to build the binaries里面選擇該文件夾用於存放編譯后的二進制文件
點擊Configure出現下面信息證明配置完成(如果報錯:No CMAKE_CXX_COMPILER could be found一類的錯誤信息證明vs2015模塊不全 可查看這篇文章https://blog.csdn.net/u013832707/article/details/53127710)
查看WITH_CUDA是否被選中(默認被選中)
在如下選擇opecv額外模塊庫的文件夾位置D:/opencv3.4.1/opencv_contrib-3.4.1/modules,最好通過后面的...進行添加,如果直接復制路徑的話子文件夾用\分割 這里的是/分割(這里遇到了一個坑)
然后再次選擇Configure
Configure Done后選擇Generate
點擊OpenProject或者build-vs2017下的OpenCV.sln
點擊重新生成解決方案
opencv_aruco341d.lib
opencv_bgsegm341d.lib
opencv_bioinspired341d.lib
opencv_calib3d341d.lib
opencv_ccalib341d.lib
opencv_core341d.lib
opencv_cudaarithm341d.lib
opencv_cudacodec341d.lib
opencv_cudafeatures2d341d.lib
opencv_cudafilters341d.lib
opencv_cudaimgproc341d.lib
opencv_cudalegacy341d.lib
opencv_cudaobjdetect341d.lib
opencv_cudaoptflow341d.lib
opencv_cudastereo341d.lib
opencv_cudawarping341d.lib
opencv_cudev341d.lib
opencv_datasets341d.lib
opencv_dnn_objdetect341d.lib
opencv_dnn341d.lib
opencv_dpm341d.lib
opencv_face341d.lib
opencv_features2d341d.lib
opencv_flann341d.lib
opencv_fuzzy341d.lib
opencv_highgui341d.lib
opencv_img_hash341d.lib
opencv_imgcodecs341d.lib
opencv_imgproc341d.lib
opencv_line_descriptor341d.lib
opencv_ml341d.lib
opencv_objdetect341d.lib
opencv_optflow341d.lib
opencv_phase_unwrapping341d.lib
opencv_photo341d.lib
opencv_plot341d.lib
opencv_reg341d.lib
opencv_rgbd341d.lib
opencv_saliency341d.lib
opencv_shape341d.lib
opencv_stereo341d.lib
opencv_stitching341d.lib
opencv_structured_light341d.lib
opencv_superres341d.lib
opencv_surface_matching341d.lib
opencv_text341d.lib
opencv_tracking341d.lib
opencv_video341d.lib
opencv_videoio341d.lib
opencv_videostab341d.lib
opencv_xfeatures2d341d.lib
opencv_ximgproc341d.lib
opencv_xobjdetect341d.lib
opencv_xphoto341d.lib
這個編譯是完全編譯,其實已經包括了開頭所說xfeature2d等模塊,使用時只需改變一下依賴的lib就可以了。還有如果覺得自己完成太花時間的話,這里附上編譯好的成品——include和install文件夾,可以直接用
https://download.csdn.net/download/goerge_l/10320907
如果還是失敗 就使用opencv2.4+CUDA+vs2015重新編譯(不需要加入額外的opecv_contrib模塊 因為opencv2中還存在SURF等算法 只不過在opencv3中移除了需要自己重新進行編譯)