天天看點

opencv3.1.0 + opencv_contrib用cmake編譯時踩過的坑以及解決方法環境介紹:背景介紹:問題1:問題2:問題3:問題4:

環境介紹:

  • Windows10 x64位系統
  • opencv3.1.0
  • visual studio 2013
  • opencv_contrib3.1.0
  • cmake3.5.2

背景介紹:

我在配置過程中很辛酸,各種錯誤,還得一個一個百度,弄得心力交瘁,是以記錄一下并總結問題及解決方法,希望後來者能借鑒(這裡感謝一下各位前輩,為後來者鋪好了路)。

話不多說,直接進入正題,具體的編譯過程參考這位部落客添加OpenCV_contrib庫至OpenCV3.1.0中(Windows 64位 環境下編譯OpenCV3.1.0和OpenCV_contrib)下面開始介紹我遇到的問題

問題1:

選好路徑和vs版本後用cmake編譯,結果沒一會就報錯如下:

Error in configuration process ,project files may be invalid
           
CMake Error at cmake/OpenCVUtils.cmake:895 (file):
file DOWNLOAD HASH mismatch

for file: [E:/Program Files/copy_opencv3.1.0/opencv/sources/3rdparty/ffmpeg/downloads/89c783eee1c47bfc733f08334ec2e31c/opencv_ffmpeg.dll]
expected hash: [89c783eee1c47bfc733f08334ec2e31c]
actual hash: [d41d8cd98f00b204e9800998ecf8427e]
status: [7;"Couldn't connect to server"]

Call Stack (most recent call first):
3rdparty/ffmpeg/ffmpeg.cmake:10 (ocv_download)
cmake/OpenCVFindLibsVideo.cmake:206 (include)
CMakeLists.txt:536 (include)


CMake Error at cmake/OpenCVUtils.cmake:899 (message):
Failed to download opencv_ffmpeg.dll. Status=7;"Couldn't connect to
server"
Call Stack (most recent call first):
3rdparty/ffmpeg/ffmpeg.cmake:10 (ocv_download)
cmake/OpenCVFindLibsVideo.cmake:206 (include)
CMakeLists.txt:536 (include)


Configuring incomplete, errors occurred!

See also "E:/Program Files/mybuild/CMakeFiles/CMakeOutput.log".

See also "E:/Program Files/mybuild/CMakeFiles/CMakeError.log".
           
opencv3.1.0 + opencv_contrib用cmake編譯時踩過的坑以及解決方法環境介紹:背景介紹:問題1:問題2:問題3:問題4:

原因是編譯過程中需要下載下傳的檔案下載下傳不成功,路徑指向的伺服器在國外,是以要翻牆才能下載下傳,隻能找下好的檔案放入對應的位置,這裡發放一下我下好的檔案ffmpeg和ippicv檔案打包

這裡詳細的可以參考這位部落客:

解決opencv310 ffmpeg、ippicv_windows_20151201.zip無法下載下傳問題

問題2:

之後加入opencv_contrib點選再次編譯後再次報錯

CMake Error at cmake/OpenCVModule.cmake:260 (foreach):
  Syntax error in cmake code at

    E:/Program Files/copy_opencv3.1.0/opencv/sources/cmake/OpenCVModule.cmake:260

  when parsing string

    E:/Program Files/copy_opencv3.1.0/opencv/sources/modules;EXTRA;E:\Program Files\opencv\opencv_contrib-3.1.0\modules

  Invalid escape sequence \P
Call Stack (most recent call first):
  modules/CMakeLists.txt:7 (ocv_glob_modules)


Configuring incomplete, errors occurred!
See also "E:/Program Files/mybuild/CMakeFiles/CMakeOutput.log".
           
opencv3.1.0 + opencv_contrib用cmake編譯時踩過的坑以及解決方法環境介紹:背景介紹:問題1:問題2:問題3:問題4:

這是因為我直接複制了window下的路徑粘貼到了cmake中,而window下路徑是以反斜杠分割的這裡改成斜杠就行了,即把‘\’分割的改成以'/'分割,就像上面選擇的源代碼的路徑和編譯後的路徑格式一樣,改正之後就正常了,這裡參考這位部落客:

Invalid character escape '\O'. Call Stack (most recent call first): modules/CMakeLists.txt

問題3:

最後,選擇new_build檔案夾裡的OpenCV.sln檔案,并輕按兩下後在VS生成解決方案時又報錯了(很無語。。。。。都快崩潰了):無法打開檔案“opencv_bioinspired310d.lib”

opencv3.1.0 + opencv_contrib用cmake編譯時踩過的坑以及解決方法環境介紹:背景介紹:問題1:問題2:問題3:問題4:
opencv3.1.0 + opencv_contrib用cmake編譯時踩過的坑以及解決方法環境介紹:背景介紹:問題1:問題2:問題3:問題4:

這是因為cmake本身的問題,打開位于

opencv_contrib-3.1.0\modules\bioinspired\src\opencl

檔案夾:

打開

retina_kernel.cl

,把注釋的

//*********

改成别的或者删掉即可。

這裡參考這位部落客:OpenCV 3 - 編譯更強大的OpenCV(二) - 拼人品時刻

opencv3.1.0 + opencv_contrib用cmake編譯時踩過的坑以及解決方法環境介紹:背景介紹:問題1:問題2:問題3:問題4:

問題4:

運作例程時又雙叒叕報錯了。。。。

opencv3.1.0 + opencv_contrib用cmake編譯時踩過的坑以及解決方法環境介紹:背景介紹:問題1:問題2:問題3:問題4:
opencv3.1.0 + opencv_contrib用cmake編譯時踩過的坑以及解決方法環境介紹:背景介紹:問題1:問題2:問題3:問題4:

這裡我在庫檔案裡面沒找到這個lib,但是在opencv_contrib裡面找到了,不知道為什麼cmake沒有編譯生成這個,我的解決方法是直接在附加依賴項裡将其删除,應該也用不上這個庫:

opencv3.1.0 + opencv_contrib用cmake編譯時踩過的坑以及解決方法環境介紹:背景介紹:問題1:問題2:問題3:問題4:

之後就成功生成解決方案

最後的最後說一下,弄完了一定要重新配置環境變量和項目環境,就像第一次在vs裡面配置opencv一樣!

DONE!