opencv編譯


1.

clone源碼

https://github.com/opencv/opencv

2.

安裝cmake

3.

cmake配置的時候,輸出目錄需要另外設置一個目錄,不可以放到源碼目錄

4.

用cmake config的時候有兩個需要在線下載,但是cmake下載不下來

5.

在cmake輸出目錄打開CMakeDownloadLog.txt文件,這里面顯示了下載什么文件,自己把url拷貝出來,在瀏覽器里面下載出來

6.

在CMakeDownloadLog.txt目錄中還記錄了把文件下載到哪里,自己下載完成后,拷貝到目錄

比如我x64的有一個需要下載的文件ippicv_2019_win_intel64_20180723_general.zip

CMakeDownloadLog.txt文件中顯示了要從https://raw.githubusercontent.com/opencv/opencv_3rdparty/32e315a5b106a7b89dbed51c28f8120a48b368b4/ippicv/ippicv_2019_win_intel64_20180723_general.zip下載到3rdparty\ippicv目錄中

7.

下載完成后在源碼目錄找到下載這個文件的cmake,比如(opencv\3rdparty\ippicv\ippicv.cmake)

 ocv_download(FILENAME ${OPENCV_ICV_NAME}
              HASH ${OPENCV_ICV_HASH}
              URL
                "${OPENCV_IPPICV_URL}"
                "$ENV{OPENCV_IPPICV_URL}"
                "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
              DESTINATION_DIR "${THE_ROOT}"
              ID IPPICV
              STATUS res
              UNPACK RELATIVE_URL)
 if(res)
   set(${root_var} "${THE_ROOT}/${OPENCV_ICV_PACKAGE_SUBDIR}" PARENT_SCOPE)
 endif()
改成

set(${root_var} "${THE_ROOT}/${OPENCV_ICV_PACKAGE_SUBDIR}" PARENT_SCOPE)

上面就是下載,成功后設置res為true,然后再設置環境為下載的文件,我們既然自己手動下載並且放置好了,就可以把這個刪掉了,直接設置環境

8.

這個時候cmake是卡死的,點擊stop,然后config和generate都是灰掉的,直接關掉

9.

再打開cmake,再config,還會有需要下載的文件,同樣下載下來放到對應目錄下,並且配置cmake

這次是ffmpeg的兩個文件

opencv_videoio_ffmpeg.dll

opencv_videoio_ffmpeg_64.dll

這個對應的cmkae是ffmpeg.cmake,把下面的直接刪掉就好了

  foreach(id ${ids})
    ocv_download(FILENAME ${name_${id}}
               HASH ${FFMPEG_FILE_HASH_${id}}
               URL
                 "$ENV{OPENCV_FFMPEG_URL}"
                 "${OPENCV_FFMPEG_URL}"
                 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/"
               DESTINATION_DIR ${FFMPEG_DOWNLOAD_DIR}
               ID FFMPEG
               RELATIVE_URL
               STATUS res)
    if(NOT res)
      set(status FALSE)
    endif()
  endforeach()

這個就是遍歷下載兩個文件,都下載好了才設置為true,然后后面配置環境,我們已經下載好了,不用這一步了

10.

這時最好重啟電腦

11.

電腦起來后選擇config,第一次結束顯示是紅的,然后再點擊config,這是沒有紅色的選項顯示了

12.

選中BUILD_opencv_world,這個的目的是把所有的lib放到一個lib中,使用更方便

13.

點擊generate生成sln工程

14.

編譯工程是如果碰到了fail,提示無法找到opencv_world411.lib,那就是因為沒有編譯成功

15.

找到工程中modules->opencv_world單獨編譯看看報錯

16.

如果報錯是 fatal error LNK1127: library is corrupt ippicvmt.lib那就是我們剛才設置的時候出現了問題

這是表示這個lib庫損壞了,我們可以在ippicv目錄下把ippicv_win刪掉,然后解壓我們自己下載的壓縮包,再重新編譯

17.

如果正常的話會全部編譯通過

18.

剩下的就是導入到自己的工程使用即可


免責聲明!

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



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