編譯安裝 OpenCV 3.1.0 + Contribute模塊 詳細總結

本文鏈接

https://blog.csdn.net/fengtaoO08/article/details/81586752

配置

Win10 + opencv 3.1.0 + opencv_contrib 3.1.0 + VS2015社區版 +cmake 3.12.0

總結方法

  • 前言

    • 首先需要先裝好cmake和vs2015。
    • 本文提到的路徑需換成你自己安裝時的路徑。
    • 存儲空間:我整個裝完(Debug和Release都裝)後,共20.5G大小- -明明只裝opencv只要幾百兆的說……
  • 下載源代碼

    • https://opencv.org/releases.html 下載opencv對應版本的 源代碼 (這裏是3.1.0,Sources)
    • https://github.com/opencv/opencv_contrib 下載opencv_contrib對應版本源代碼(點release,選擇3.1.0版本的zip下載)


    • 新建文件夾OpenCV-3.1.0/opencv,下有sources和build兩個文件夾,將下載的opencv源代碼以及contribute源代碼分別解壓到sources裏面方便查找。


  • Cmake生成VS工程

    • Cmd運行cmake-gui(如果沒有配置好cmake環境變量,就直接找cmake安裝文件夾下bin裏),分別填入sources文件夾下的 opencv源碼文件夾 和build文件夾,點config選VS 2015 Win64(不然的話後面建的的工程沒有x64版本)
    • 再點config,done後在search框內輸入extra,找到OPENCV_EXTRA_MODULES_PATH,填入sources文件夾下的 contribute源碼文件夾下的modules文件夾 。點擊config,直到done。
    • 我的matlab配置貌似有問題,導致出現亂碼,乾脆不裝matlab模塊了。因此搜索mat,去掉WITH_MATLAB選項的√
    • Contribute的HDF模塊貌似代碼(hdf5.cpp)寫的有問題,導致後面工程編譯不通過(真坑,耗費了我大量時間)。而且網上沒有搜到解決方法,乾脆也不裝這個模塊了。因此搜索hdf,去掉BULD_opencv_hdf的√。
    • 點擊config,直到done。再點generate生成VS工程,直到done。然後點擊open project就直接用VS2015打開工程了。
  • VS編譯

    • 在VS2015中首先等它讀取完工程(我的電腦比較舊了,非常慢)直到就緒。


    • 選擇平臺版本爲x64,然後選解決方案配置,想編譯Debug版本就選Debug,想Release就選Release。可以都編譯,現在先選一個。

    • VS選擇生成按鈕,選擇重新生成解決方案,開始漫長的編譯等待(我筆記本電腦很舊很慢了啊,大概2到3小時)
    • 編譯完成後(結果應該大部分項目都成功,這裏是199個,20幾個失敗我看了下大部分都是cuda相關的模塊的,不知道是不是版本不對,暫不管,50幾個跳過),會問你項目已被修改,選全部重新加載,等待就緒。
    • 在解決方案資源管理器中右鍵CmakeTargets下的INSTALL,選僅用於項目-》僅生產INSTALL,等待(可能十幾分鍾?)直到結束就ok
    • 這樣一波操作之後應該可以build\lib文件夾下的Debug或Release文件夾下找到很多lib庫(如果很少說明大部分都沒編譯成功咯),如果想Debug和Release都裝就再選一次解決方案配置,重複一遍上述在VS下的操作。下面進行環境變量配置。
  • 系統環境配置和VS配置

    • 環境變量設置的路徑應該是build\install下的…install\x64\vc14\bin。即,在我的電腦右鍵,管理,高級系統設置,高級,環境屬性,系統變量列表中的path下加;G:\OpenCV-3.1.0\opencv\build\install\x64\vc14\bin
    • 在VS中,新建項目,到屬性管理器Debug和Release下配置分別包含目錄、庫目錄以及鏈接器輸入。可以在Microsoft.Cpp.x64.user屬性表中配置,這樣以後只要你不換路徑,新建項目就直接能用opencv了。例如,右鍵屬性


    • VC++目錄–\>包含目錄,添加:

      G:\OpenCV-3.1.0\opencv\build\install\include

      G:\OpenCV-3.1.0\opencv\build\install\include\opencv

      G:\OpenCV-3.1.0\opencv\build\install\include\opencv2

    • VC++目錄–\>庫目錄,添加:

      G:\OpenCV-3.1.0\opencv\build\install\x64\vc14\lib

      G:\OpenCV-3.1.0\opencv\build\install\x64\vc14\staticlib

    • 鏈接器–\>輸入–\>附加依賴項,添加(注意,我這裏也不知道該加哪些,直接把lib下的全部放進去了,或許不需要加那麼多的吧……用哪些加那些好了。這裏xx310d.lib放在前面表示優先使用Debug的庫):

      opencv_aruco310d.lib

      opencv_bgsegm310d.lib

      opencv_bioinspired310d.lib

      opencv_calib3d310d.lib

      opencv_ccalib310d.lib

      opencv_core310d.lib

      opencv_cudaarithm310d.lib

      opencv_cudabgsegm310d.lib

      opencv_cudacodec310d.lib

      opencv_cudafeatures2d310d.lib

      opencv_cudafilters310d.lib

      opencv_cudaimgproc310d.lib

      opencv_cudastereo310d.lib

      opencv_cudawarping310d.lib

      opencv_cudev310d.lib

      opencv_datasets310d.lib

      opencv_dnn310d.lib

      opencv_dpm310d.lib

      opencv_face310d.lib

      opencv_features2d310d.lib

      opencv_flann310d.lib

      opencv_fuzzy310d.lib

      opencv_highgui310d.lib

      opencv_imgcodecs310d.lib

      opencv_imgproc310d.lib

      opencv_line_descriptor310d.lib

      opencv_ml310d.lib

      opencv_objdetect310d.lib

      opencv_optflow310d.lib

      opencv_photo310d.lib

      opencv_plot310d.lib

      opencv_reg310d.lib

      opencv_rgbd310d.lib

      opencv_saliency310d.lib

      opencv_shape310d.lib

      opencv_stereo310d.lib

      opencv_structured_light310d.lib

      opencv_surface_matching310d.lib

      opencv_text310d.lib

      opencv_tracking310d.lib

      opencv_ts310d.lib

      opencv_video310d.lib

      opencv_videoio310d.lib

      opencv_xfeatures2d310d.lib

      opencv_ximgproc310d.lib

      opencv_xobjdetect310d.lib

      opencv_xphoto310d.lib

      opencv_aruco310.lib

      opencv_bgsegm310.lib

      opencv_bioinspired310.lib

      opencv_calib3d310.lib

      opencv_ccalib310.lib

      opencv_core310.lib

      opencv_cudaarithm310.lib

      opencv_cudabgsegm310.lib

      opencv_cudacodec310.lib

      opencv_cudafeatures2d310.lib

      opencv_cudafilters310.lib

      opencv_cudaimgproc310.lib

      opencv_cudastereo310.lib

      opencv_cudawarping310.lib

      opencv_cudev310.lib

      opencv_datasets310.lib

      opencv_dnn310.lib

      opencv_dpm310.lib

      opencv_face310.lib

      opencv_features2d310.lib

      opencv_flann310.lib

      opencv_fuzzy310.lib

      opencv_highgui310.lib

      opencv_imgcodecs310.lib

      opencv_imgproc310.lib

      opencv_line_descriptor310.lib

      opencv_ml310.lib

      opencv_objdetect310.lib

      opencv_optflow310.lib

      opencv_photo310.lib

      opencv_plot310.lib

      opencv_reg310.lib

      opencv_rgbd310.lib

      opencv_saliency310.lib

      opencv_shape310.lib

      opencv_stereo310.lib

      opencv_structured_light310.lib

      opencv_surface_matching310.lib

      opencv_text310.lib

      opencv_tracking310.lib

      opencv_ts310.lib

      opencv_video310.lib

      opencv_videoio310.lib

      opencv_xfeatures2d310.lib

      opencv_ximgproc310.lib

      opencv_xobjdetect310.lib

      opencv_xphoto310.lib

    • 本來應該到這按理說就結束了,但或許有人和我一樣,在項目中使用opencv庫函數時會碰到缺少缺少opencv_xxx310d.dll文件的錯誤,此時網上的一種解決方法是找到(或下載)這些文件放到C:\Windows\system32\中。我採用另一種,在VS上右鍵項目,屬性,調試,環境,添加系統環境變量(沒錯就是剛剛填過的path里加的,按理說應該不用加了啊- -);G:\OpenCV-3.1.0\opencv\build\install\x64\vc14\bin。這樣就把這些dll文件路徑告訴了VS了。

  • 愉快地使用opencv 3.1.0+contribute

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章