摘要:
由于项目要使用一些opencv新加入的功能,所以要自己编译opencv_contrib,因为最新版本是opencv_contrib-4.1.2所以就选择了这个版本。博客记载编译过程与过程中所遇到的问题,以及解决办法。问题可以简单的描述为在cmake过程中下载一些依赖库失败(ffmpeg、ippicv、xfeatures2d等);
1.工具以及资源的准备
首先要清楚VC版本号与VS的对应关系
我的电脑上装的是vs2015,所以之后我会选择vc14进行后续的编译和安装
-
✅opencv源代码
-
✅opencv_contrib源代码
-
✅cmake
-
✅vs2015
-
opencv下载
源代码的地址是:https://github.com/opencv/opencv/,进入之后可以选择自己想要下载的版本,版本选择如图所示:
- 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生成编译文件
具体操作如图所示:
-
🔲Where is the source code是opencv源码路径,即“源路径”
-
🔲 Where to build the binaries是要生成opencv的vs工程路径,即“目的路径”
-
点击Configure,弹出对话框,选择编译工程的平台。我选的是64位的VS2015
- 点击Finish,即开始配置。这需要一定的时间,期间要下载一些依赖项,此时通畅的网络就起了关键作用,如果下载不全,可通过查看日志文件CMakeDownloadLog.txt手动下载。在完成第一次配置后,进行如下操作:
- 找到OPENCV选项中的OPENCV_EXTRA_MODULES_PATH选项,在选项后放入下载的opencv_contrib解压后的modules文件夹路径。
注:这样就把opencv_contrib编译进去了。
- 搜索opencv_world,复选一下
注:这样,在调用dll时,只调用这一个就行了,不用根据功能选择了,省了些麻烦。
- 我的项目需要nonfree,所以我把这个也勾选了 (可省略)
-
✅然后再按Configure进行配置,这时会出现报错的地方。
-
主要的错误是依赖的文件下载失败的问题,不得不说 Github对中国用户确实不友好,经常遇到下载速度慢、下载失败的问题。为了解决这一问题,我们只能手动解决:
(1) 去哪里下载?
- 🔲打开download log file看看,如提示,我的在D:\opencv4.0.1\opencv-build\CMakeDownloadLog.txt,根据这个日志文件,我下载了这些:
- 🔲CMake后会发现opencv-source根目录下会出现一个.cache的文件夹,里面有需要下载的内容,如果下载失败所有的内容都是0KB
(2)下载后放哪里:
显然下载后放.cache下对应的地方,然后改其名字为MD值+’-’+下载的文件名
(3)最后再次CMake-Configure就成功通过了
直到没有红色出现,就说明没有新的变化可以用于更改。
可以看到之后的confugure都没有变红,再点击Generate。
完成后左下角显示Configuring done,Generating done。
完成之后如果在你的输出文件夹中找到OpenCV.sln文件,即表明编译成功完成。
3、vs2015编译
- 🔲1、使用VS2015打开刚刚的“OpenCV.sln”文件
- 🔲2、点击“生成—>重新生成解决方案”,这得等一段时间 顺利完成后的图片如下
注意你选择的是debug还是release,这就是debug版与release版的区别。bebug版有检测数据是否溢出的功能,release相对反应速度快。
我选择的是debug ,x64)
- 🔲3、解决方案资源管理器—>CMakeTargets—>ALL_BUILD—>生成
- 🔲4、生成Intall安装文件
解决方案资源管理器—>CMakeTargets—>INSTALL—>仅用于项目—>仅生成INSTALL(B)
- 🔲5、最后到自定义的文件夹确认一下,找到install文件夹,进去查看里面的内容(如下图,注:对于后边配置环境,install文件夹作用就像配置opencv4.0.1时的build文件夹一样):
4、环境配置
搜索控制面板->系统和安全->系统
【高级系统设置】
【环境变量】
【系统变量】【Path】【编辑】
编译目录“ D:\openCV-4.0.1\build\install\x64\vc14\bin” 的完整路径 (如下图),根据你自己Cmake时的路径进行修改。