OpenCv3.2+opencv_contrib扩展模块 +VS2015+CMake3.9解决编译出错的问题

最近想用SURF特征做项目,但是OpenCV 3.X版本以上把该特征放在扩展库里面。要使用这样的函数(其他也有很多),就必须要用CMake编译源代码+opencv_contrib扩展库了,在这个过程中遇到了好多问题,也纠结了好长时间,现在我把我成功的经验分享给大家:D

我想主要解释的问题在于扩展库opencv_contrib的编译错误,单独编译opencv3.2源码出现的同样问题可以参考,我这里没出错\(^o^)/~

先开始单独编译官方sources文件下的内容成功,注意第一次运行CMake时候,会提示语言选择,因为我的是VS2015 64位的,(不是第一次cmake的话,请点击CMake-GUI 3.9菜单栏上File -> delete cache)这时候OPENCV_EXTRA_MODULES_PATH后面的value置为空,第二次需要把扩展库opencv_contrib加进来一起编译,顺序 如下图:

OpenCv3.2+opencv_contrib扩展模块 +VS2015+CMake3.9解决编译出错的问题_第1张图片

OpenCv3.2+opencv_contrib扩展模块 +VS2015+CMake3.9解决编译出错的问题_第2张图片

但是OPENCV_EXTRA_MODULES_PATH设置自己路径名后,然后和源代码sources一起编译就出错,如下图:

OpenCv3.2+opencv_contrib扩展模块 +VS2015+CMake3.9解决编译出错的问题_第3张图片

错误提示:

OpenCv3.2+opencv_contrib扩展模块 +VS2015+CMake3.9解决编译出错的问题_第4张图片

提示是Failed to download,当然可能会碰到类似上面各类文件下载或者缺少错误message,那我们当然按照错误提示来找原因啦。

原因1:我们可以去github或者点击这里下载对应的文件然后替换掉原来的位置,比如你缺少

opencv3.2 protobuf-cpp-3.1.0.tar.gz ,下载后把这个文件放到 D:\opencv3_2\opencv\opencv_contrib-3.2.0\modules\dnn\.download\bd5e3eed635a8d32e2b99658633815ef\v3.1.0 替换掉。

。也可以参考这个博客 http://blog.csdn.net/jeanyuxia/article/details/64444635下载需要的。  

另外一个重要的错误原因2:是cmake刚开始编译的语言要选择正确(上面已说明),比如我目前是VS2015  Win64的,刚开始编译的时候要注意此点。

原因3:opencv版本一定要与opencv_contrib 版本对应,否则会出现上面的错。(我的是opencv3.2,就必须下载opencv_contrib 3.2.0版本的),在这里可以选择你对应的版本地址:https://github.com/opencv/opencv_contrib/releases,我选择的zip压缩格式的,另外一个tag的目前还不知道~



你可能感兴趣的:(cmake,opencv,C++)