一、前言
opencv新出了3.4.0版本,最近重装系统,索性就把VS和opencv全换成最新版了,索然不知道新添了啥牛逼功能,不过先把环境配置好再说。
二、操作环境
系统:win10 64位
其它:VS2017 CMake 3.10.0-rc3
vs2017和CMake的安装就不说了,网上还是有很多教程的,百度一下都好使。
三、准备文件
OpenCV3.4.0
OpenCV_contrib
下载说明:
3.1 打开链接后出现如下界面:
这是opencv在GitHub上公开的源码,包括opencv源代码和拓展模块contrib及其之前的各个版本。当然,以后OpenCV升级都可以继续在这里面下载到。所以还是非常有必要收藏一下的。
3.2 单击opencv ,,按下图所示完成opencv3.4.0的下载。
等待下载完成,如此就下载好了opencv3.4.0。
3.3 返回3.1所示界面,单击opencv_contrib,与上述过程类似。
等待下载完成,如此就下载好了contrib模块。注意:contrib模块的版本一定要与opencv的相同,否则会出现错误。本文均选择3.4.0版本。
3.4 下载后,解压到自定义的目录中。
四、编译OpenCV 3.4.0
写到这突然发现好啰嗦啊,下载说明有点长,不过对新手应该会比较容易理解一点吧。接下来是最最最最主要的部分,楼主在编译时也遇到了很多问题,再编译的过程中也会向大家一一说明,以及如何解决,为后来者提供方便吧。
4.1 打开CMake的gui界面,按下图所示操作:
弹出选择编译器界面,选择Visual Studio 15 2017 win64 ,然后点Finish.
说明:该过程需要联网。但也有可能会因为网络不稳等原因导致出现部分文件无法下载,会以红字的形式报错,此时需要到编译目录中打开CMakeDownloadLog.txt,找到对应的下载链接,自行下载,然后将下载的文件放到相应的目录中。再次点Configure,直到不出现红字错误为止,方可进行下一步。
错误说明:
错误1:无法下载opencv_ffmpeg.dll文件。最长出现的错误就是无法下载opencv_ffmpeg.dll、opencv_ffmpeg_64.dll、ffmpeg_version.cmake三个文件,楼主此次只有opencv_ffmpeg.dll未成功下载,另外两个军成功下载。
FFMPEG: Download: opencv_ffmpeg.dll
=======================================================================
Couldn't download files from the Internet.
Please check the Internet access on this host.
=======================================================================
CMake Warning at cmake/OpenCVDownload.cmake:190 (message):
FFMPEG: Download failed: 6;"Couldn't resolve host name"
For details please refer to the download log file:
F:/opencv3.4.0/newbuild/CMakeDownloadLog.txt
Call Stack (most recent call first):
3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)
cmake/OpenCVFindLibsVideo.cmake:218 (download_win_ffmpeg)
CMakeLists.txt:602 (include)
错误2:找不到ippicv,报错的图就不往上放了,写博客再次编译的时候竟然没有出现这个错误,楼主表示有时候出现啥错误真的看缘分。
解决方案:到编译目录中打开CMakeDownloadLog.txt,找到ippicv_2017u3_win_intel64_general_20170822.zip的下载链接,自行下载,然后在压缩包名前面加上文件的hash值(文末会上传一个附件,下载后打开,把文件拖入,就能得到文件的hash值。),即压缩包名变为hash值-原名,再将其复制到sources\.cash\ippicv\文件夹下(sources是解压的opencv3.4.0的目录。一般opencv编译时,会查看.cash文件夹下是否有相应的文件,如果有,就用此文件夹下的编译,否则去网上下载。),再次点击configure,直到全部正确。
4.2 完成后,找到OPENCV_EXTRA_MOUDULES_PATH项,如下图所示,设置contrib库的modules目录,然后点configure进行第二次配置。
然后等待generate done即可
4.3 用vs2017生成release 和 debug 动态链接库
上一步结束后,点击cmake中的【Open Project】这会自动打开vs2017 ,也可以到myBuild里找到OpenCV.sln打开。
打开vs2017后一般可以直接看到【解决方案资源管理器】一栏,没有就点击【视图v】-【解决方案资源管理器p】,可以看到OpenCV的解决方案
选择你需要的平台 ,选择release x64。(先选那个都一样)
右键解决方案重新生成
待结束后,点开CmakeTargets–>INSTALL,右键->【仅用于项目】->【仅生成INSTALL】
生成后把opencv和contrib综合了起来。所以配置的时候只需要用myBuild/install了。 这是myBuild里的文件 由于垃圾文件很多myBuild里可以只留下install,其他都可以删掉
等待完成。同样的过程选择debug x64平台再执行一遍。至此编译结束。
myBuild最后大概有6.5G【有很多垃圾文件】。由于我的程序一般按装到D盘,所以我在D盘新建了一个文件夹,命名为opencv3.4.0
,然后将install中的内容拷贝到此文件夹下,再将opencv3.4.0和contrib的源码拷贝过来(源码拷不拷被都无所谓,不影响使用,
只是以后看源码方便。)。最终形成编译完的文件。
1. 右键电脑【属性】
2. 【高级系统设置】
3. 【环境变量】
4. 【系统变量】【Path】
1. 在变量值后加
编译目录\install\x64\vc15\bin 的完整路径
注意这要改成你的路径,多个变量值以英文分号分开
参考:http://blog.csdn.net/qq_34360180/article/details/66978979