opencv4.12+opencv_contrib-4.1.2+VS2015编译笔记
摘要:
由于要使用一些opencv新加入的功能,所以要自己编译 opencv_contrib,因为最新版本是opencv_contrib-4.1.2所以就选择了这个版本。博客记载编译过程与过程中所遇到的问题,以及解决办法。问题可以简单的描述为在cmake过程中下载一些依赖库失败(ffmpeg、ippicv、xfeatures2d等);
96444a4645753aaafa296479665c9185-opencv_ffmpeg_64 下载失败
90260a4da737fc045c9279567313ee9d-opencv_videoio_ffmpeg_64 下载失败
ippicv下载不成功
1.工具以及资源的准备
- opencv源代码
- opencv_contrib源代码
- cmake
-
vs2015
(1)opencv下载
源代码的地址是:https://github.com/opencv/opencv/,进入之后可以选择自己想要下载的版本,版本选择如图所示:
点击master,后选中Tags就可以选择自己下载的版本。
(2)opencv_contrib代码下载:
opencv_contrib代码地址是:https://github.com/opencv/opencv_contrib,其版本选择的方式和opencv源代码版本选择方式一致。
(3)CMake下载
下载地址:https://cmake.org/files/v3.11/cmake-3.11.3-win64-x64.msi
2.使用CMake生成编译文件
具体操作如图所示:
source code路径:下载opencv源码解压后的路径;
build the binaries:工程生成路径。
选择好路劲后点击Configure按钮,就会生成红色上面的界面,不出意外,配置过程中会有一些错误。
接下来先不说错误,错误会在最后讲解。找到OPENCV选项中的OPENCV_EXTRA_MODULES_PATH选项,在选项后放入下载的opencv_contrib解压后的modules文件夹路径。具体如图所示:
接着在BUILD组下找到opencv_world,复选一下,如下图所示:
这下cmake部分就选择完了,该解决错误了。
上面已经说了,主要的错误是依赖的文件下载失败的问题,不得不说 Github对中国用户确实不友好,经常遇到下载速度慢、下载失败的问题。为了解决这一问题,我们只能手动解决:
自己去opencv三方库下载需要的东西:opencv/opencv_3rdparty
首先要找到下载文件放在哪,本人的放在 D:\opencv4.12\opencv-4.1.2.cache 路径下,即放在opencv源码文件夹下的 .cache 文件夹。进去一下,会发现有好几个文件夹,博文只讲解如何解决FFmpeg下载问题,其它的套路都是一样的。
进入上述三方库网页之后你会发现,妈呀这么多版本的三方库,哪一个才是我需要的呢?嗯,这确实是一个大难题,经过博主几个小时的摸索之后,发现有迹可循。D:\opencv4.12\opencv-4.1.2\3rdparty\ffmpeg 路径下的ffmpeg.cmake文件中就有告诉我们用哪一个才是我们需要的,如下图所示:
在opencv三方库中找到对应文件,下载对应的dll文件或其它文件。以ffmpeg的dll举例,将下载的dll放在 D:\opencv4.12\opencv-4.1.2.cache\ffmpeg 文件夹中,即源码文件夹下 .cache文件夹下 ffmpeg文件夹中,最后就是更改名字,在对应的dll文件明前加入相应的前缀。具体如图所示:
为什么我的文件夹中有好几份副本,因为这个过程是我自己摸索出来的,走了不少弯路。为了解决下载问题,我又去自己搭建了梯子,以为是网络限制的原因,不过确实,用梯子在GitHub上下载东西是校园网的数十倍。
解决这下下载问题,一次点击Configure,Generate、open project即可,最后就是编译。ALL_Build之后,单独编译Install。Install的作用是方便后续使用。
记载一下自己的艰辛历程,上次编译4.0的时候遇到过这样的问题,但是解决后没有记载下来,导致我现在遇到这种问题又要重新摸索,所以记载自己的摸索日志,给自己、别人都提供方便。