環境介紹:
- 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".
原因是編譯過程中需要下載下傳的檔案下載下傳不成功,路徑指向的伺服器在國外,是以要翻牆才能下載下傳,隻能找下好的檔案放入對應的位置,這裡發放一下我下好的檔案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".
這是因為我直接複制了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”
這是因為cmake本身的問題,打開位于
opencv_contrib-3.1.0\modules\bioinspired\src\opencl
檔案夾:
打開
retina_kernel.cl
,把注釋的
//*********
改成别的或者删掉即可。
這裡參考這位部落客:OpenCV 3 - 編譯更強大的OpenCV(二) - 拼人品時刻
問題4:
運作例程時又雙叒叕報錯了。。。。
這裡我在庫檔案裡面沒找到這個lib,但是在opencv_contrib裡面找到了,不知道為什麼cmake沒有編譯生成這個,我的解決方法是直接在附加依賴項裡将其删除,應該也用不上這個庫:
之後就成功生成解決方案
最後的最後說一下,弄完了一定要重新配置環境變量和項目環境,就像第一次在vs裡面配置opencv一樣!
DONE!