1. 程式人生 > >cmake編譯安裝OpenCV

cmake編譯安裝OpenCV

步驟過程:下載OpenCV原始碼包opencv-3.2.0.zip

解壓後,檢視資料夾opencv-3.2.0/3rdparty/ffmpeg


---cmake結束之後---在ffmpeg資料夾下,有如下內容:


該資料夾下沒有ffmpeg.dll等動態連結庫,在用cmake編譯原始碼時,會下載ffmpeg.dll等庫,所有要保持網路通暢。

——————configure過程

下載opencv_ffmpeg.dll的過程


下載完之後,安裝



這時會在opencv的原始碼包裡發現多了三個檔案opencv_ffmpeg.dll opencv_ffmpeg_64.dl 


在下載另一條的時候會失敗的,錯誤提醒如下:


編譯OpenCV3.2.0時,ffmpeg或ippcv下載不成功的解決方案可以通過手動配置來解決這類問題,當然也可以直接配置之後再編譯,





下載


解壓資料夾下後,會看到以下資料夾,看到ippicv:


在資料夾ippicv下,會有分別在linux 、mac、win系統的三個壓縮檔案包,如下:


然後解壓win的zip下:


然後將解壓的該資料夾,存放在\ippicv,首先新建一個unpack的資料夾,


然後,將ippicv_win資料夾複製到unpack資料夾下。

然後,編輯downloader.cmake(首先將複製一份),如下:

,然後編輯downloader.cmake,如下:

#
# The script downloads ICV package
#
# On return this will define:
# OPENCV_ICV_PATH - path to unpacked downloaded package
#

function(_icv_downloader)
  # Commit SHA in the opencv_3rdparty repo
  set(IPPICV_BINARIES_COMMIT "81a676001ca8075ada498583e4166079e5744668")
  # Define actual ICV versions
  if(APPLE)
    set(OPENCV_ICV_PACKAGE_NAME "ippicv_macosx_20151201.tgz")
    set(OPENCV_ICV_PACKAGE_HASH "4ff1fde9a7cfdfe7250bfcd8334e0f2f")
    set(OPENCV_ICV_PLATFORM "macosx")
    set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_osx")
  elseif(UNIX)
    if(ANDROID AND NOT (ANDROID_ABI STREQUAL x86 OR ANDROID_ABI STREQUAL x86_64))
      return()
    endif()
    set(OPENCV_ICV_PACKAGE_NAME "ippicv_linux_20151201.tgz")
    set(OPENCV_ICV_PACKAGE_HASH "808b791a6eac9ed78d32a7666804320e")
    set(OPENCV_ICV_PLATFORM "linux")
    set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_lnx")
  elseif(WIN32 AND NOT ARM)
    set(OPENCV_ICV_PACKAGE_NAME "ippicv_windows_20151201.zip")
    set(OPENCV_ICV_PACKAGE_HASH "04e81ce5d0e329c3fbc606ae32cad44d")
    set(OPENCV_ICV_PLATFORM "windows")
    set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_win")
  else()
    return() # Not supported
  endif()
  set(OPENCV_ICV_UNPACK_PATH "${CMAKE_CURRENT_LIST_DIR}/unpack")
  set(OPENCV_ICV_PATH "${OPENCV_ICV_UNPACK_PATH}${OPENCV_ICV_PACKAGE_SUBDIR}")

  message(STATUS "ICV: Package successfully downloaded")
  set(OPENCV_ICV_PATH "${OPENCV_ICV_PATH}" PARENT_SCOPE)
endfunction()

_icv_downloader()
,然後重新點選configure,

,然後再點選 "Configure",紅色部分,全部成為白色部分,


,然後點選Generate按鈕:


,生成完成後,在cmake中的指定資料夾下,有如下:


,開啟上述指定的資料夾,有:


,利用visual studio 2015開啟上述的.sln解決方案,然後,將預設的Debug模式,改為Release模式,


,然後點選"Build"->"Build Solution"(生成--生成解決方案),大概等幾分鐘後,結果變為:


然後,開啟右側的解決方案資源管理器,再點選CMakeTarget-INSTALL:右鍵選擇“僅用於專案-僅生成INSTALL”,


,然後開啟生成的目錄:


發現在資料夾下install下,開啟該資料夾,會發現有一個x86的資料夾,