环境介绍:
- 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!