一、Opencv3.4.1及擴展模塊在VS2019里的安裝


一、版本說明

  (我發誓這是我最后一次寫Opencv的安裝~_~)

  Opencv的穩定版本和擴展版本是分開的,一般我們使用穩定版本就可以了,但是如果設計到人臉識別這些東西,那么就需要用到擴展版本。

  各軟件版本:

  Opencv3.4.1

  Opencv contrib 3.4.1

  Cmake  3.16.0

  VS 2019

二、基礎准備

  首先必須安裝VS,Cmake,這些不多說了。

  然后下載Opencv3.4.1:官網鏈接:https://opencv.org/opencv-3-4-1.html

  Opencv 3.4.1的擴展模塊:https://github.com/opencv/opencv_contrib

   注意這里contrib下載的版本在這里選擇:

  

 三、編譯過程

  1-這里我的文件夾如圖:

  

 

   build是空文件夾,contrib下載的安裝包解壓在了sources文件夾下面(它也可以放在Sources並列位置)

  2-打開Cmake

  路徑如下:

  

   3-點擊Configure

  這個時候開始配置,但是會出現錯誤:

  錯誤一:OpenCV does not recognize MSVC_VERSION 1922

    我們打開提示對應的Cmake文件,找到對應的位置。

if(MSVC_VERSION EQUAL 1400)
    set(OpenCV_RUNTIME vc8)
  elseif(MSVC_VERSION EQUAL 1500)
    set(OpenCV_RUNTIME vc9)
  elseif(MSVC_VERSION EQUAL 1600)
    set(OpenCV_RUNTIME vc10)
  elseif(MSVC_VERSION EQUAL 1700)
    set(OpenCV_RUNTIME vc11)
  elseif(MSVC_VERSION EQUAL 1800)
    set(OpenCV_RUNTIME vc12)
  elseif(MSVC_VERSION EQUAL 1900)
    set(OpenCV_RUNTIME vc14)
  elseif(MSVC_VERSION MATCHES "^191[0-9]$")
    set(OpenCV_RUNTIME vc15)

  可以看到,由於使用的vs2019,對應版本是1922,所以這里無法識別,

  這個時候我們修改如下(大家根據自己的VS對應的版本去添加,一般來說VS2019-vc16, vs2017-vc15):

if(MSVC_VERSION EQUAL 1400)
    set(OpenCV_RUNTIME vc8)
  elseif(MSVC_VERSION EQUAL 1500)
    set(OpenCV_RUNTIME vc9)
  elseif(MSVC_VERSION EQUAL 1600)
    set(OpenCV_RUNTIME vc10)
  elseif(MSVC_VERSION EQUAL 1700)
    set(OpenCV_RUNTIME vc11)
  elseif(MSVC_VERSION EQUAL 1800)
    set(OpenCV_RUNTIME vc12)
  elseif(MSVC_VERSION EQUAL 1900)
    set(OpenCV_RUNTIME vc14)
   #添加這兩行,1922是錯誤提示的vs版本,vc16是對應的工具
  elseif(MSVC_VERSION EQUAL 1910)
    set(OpenCV_RUNTIME vc15)
  elseif(MSVC_VERSION EQUAL 1922)
    set(OpenCV_RUNTIME vc16)
  elseif(MSVC_VERSION MATCHES "^191[0-9]$")
    set(OpenCV_RUNTIME vc15)

  錯誤二:WARNING "Face: Can't get model file for face alignment."

  這個時候我們找到對應的cmakelists部分:

set(__commit_hash "8afa57abc8229d611c4937165d20e2a2d9fc5a12")
set(__file_hash "7505c44ca4eb54b4ab1e4777cb96ac05")
ocv_download(
    FILENAME face_landmark_model.dat
    HASH ${__file_hash}
    URL
      "${OPENCV_FACE_ALIGNMENT_URL}"
      "$ENV{OPENCV_FACE_ALIGNMENT_URL}"
      "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/"
    DESTINATION_DIR "${CMAKE_BINARY_DIR}/${OPENCV_TEST_DATA_INSTALL_PATH}/cv/face/"
    ID "data"
    RELATIVE_URL
    STATUS res
)
if(NOT res)
  message(WARNING "Face: Can't get model file for face alignment.")
endif()

  發現是其中的數據無法下載:face_landmark_model.dat

  但是上面提供了鏈接:https://github.com/opencv/opencv_3rdparty/tree/contrib_face_alignment_20170818

  我們下載下來,復制到下面這個文件夾(注意不同版本不一樣,Opencv3.4.1是這樣的)

  

   我們可以看到里面已經有了一個文件,但是沒有下載成功,我們把這個文件刪除,並將復制過來的文件命名為截圖里面的文件名。

  4-設置

  勾選Build_opencv_world:(這個選項將所有的lib文件集合為一個.lib文件)

  

   設置contrib文件路徑:

  

   設置安裝路徑(這個文件夾是最后使用的)

  

   5-重新點擊Configure,多點擊幾次,直到完全變白

   6-點擊Generate

   7-點擊OpenProject

三、VS編譯

  1-編譯

  解決方案選擇Release x64

  解決方案里面選擇ALL_BUILD,然后右鍵,選擇生成,開始編譯,大概半個小時到一個小時

     

        2-安裝

  單擊INSTALL, 右鍵,選擇“設為啟動項目”

  然后生成。所有文件被安裝到install文件里面

四、配置環境變量與屬性

  1-配置電腦系統變量

 

   在Path里面添加路徑:

   

   也就是install文件夾里面的bin文件夾

  2-VS屬性表配置

  興建一個工程,在里面興建一個屬性表Opencv

  2.1  VC++目錄

  

   在包含目錄里面添加:

  

   庫目錄里面添加(都是Install文件夾里面的):

  

   2.2 C/C++->常規->附加包含目錄:

  

   2.3 鏈接器->輸入->附加依賴項

opencv_world341.lib
opencv_img_hash341.lib

  注意上面我只是編譯安裝了Release x64版本的,所以只有opencv_world341.lib,而沒有出現opencv_world341d.lib,如果需要可以自己再次配置安裝。

  至此安裝完成

五參考鏈接

  1-Ubuntu - OpenCV 源碼安裝與測試

  有一部分忘記了。

六、問題補充

  我最開始的時候只是安裝了Opencv沒有安裝擴展部分,當再次編譯安裝的時候,出來問題:

    無法定位程序輸入點於動態鏈接庫

  這個時候是因為原來的 opencv_world341.dll程序沒有被覆蓋,所以我們需要找到新生成的opencv_world341(install/bin文件夾里面),復制到:

  C:\Windows\System32

  重新覆蓋即可

  另外,各種輸入的時候,路徑不要有錯誤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM