Opencv3+Opencv_contrib编译
小白一个,自己摸索的编译过程,供其他小白参考。
需要额外下载的文件已打包提供:(上传不了大于110M的文件,提供百度云链接)
链接:http://pan.baidu.com/s/1gfjGfOv 密码:kl0a
编译好的库文件,可直接配置使用:
http://download.****.net/download/jewellwjxx/10105631
本人电脑配置:
Windows 7(64位)+ VS2013 +Opencv3.3.1 + Opencv_contrib3.3.1 + Cmake
1.在Windows中,使用Git Bash将Opencv和Opencv_contrib的源码Clone到本地,源码链接如下:
2.
安装Cmake,Cmake链接如下:
https://cmake.org/files/v3.10/cmake-3.10.0-rc4-win64-x64.msi
安装时,记得选中“将Cmake添加到系统路径”,如下图:
3.
头几步配置过程网上有很多,可以直接查看相关网页,下面主要说明配置时由于网络下载遇到的问题。
首先,我自己的存放源码的文件夹名字是source,存放编译后文件的文件夹名字为build,如下:
source中存放的opencv的源码和opencv_contrib的源码文件夹。
(1)配置时,下载opencv_ffmpeg.dll,此时出现下图:
出现这种情况时,建议手动下载该.dll文件。
首先打开(你自己放Opencv源码的文件夹路径)\3rdparty\ffmpeg下的ffmpeg.cmake文件,查看所需要下载的文件名称与下载后放置的目录,如下图:
可知,需要下载opencv_ffmpeg.dll、opencv_ffmpeg_64.dll、ffmpeg_version.cmake三个文件,下载链接:
https://github.com/opencv/opencv_3rdparty/branches/all
ffmpeg.cmake文件中显示需要下载的文件为ffmpeg/master_20171009版:下载opencv_ffmpeg.dll、opencv_ffmpeg_64.dll、ffmpeg_version.cmake三个文件,即红框的三个:
下载后应该将文件放到${OpenCV_BINARY_DIR}/3rdparty/ffmpeg中,即我们这儿的(你自己放置编译好的文件的文件夹路径)build\3rdparty\ffmpeg,如果没有ffmpeg,自己手动创建即可。接着修改ffmpeg.cmake,修改前可以先备份一下。修改如下:
即将下载三个文件的语句删掉。此时可关掉Cmake软件,删除build文件夹(这是我自己放置编译好的文件的文件夹)下除了3rdparty文件夹的其他东西。
重新打开Cmake,点击Configure进行配置。
(2)
按(1)配置后遇到如下问题:
说在提取一个.zip文件时出错,我们按照错误提示的路径查看。
D:/opencv3/source/opencv3.3.1/.cache/ippicv/(这是我自己的路径)
有这么一个文件,在(你自己的路径)\source\opencv3.3.1\3rdparty\ippicv的ippocv.cmake文件中可知。
该文件解压后的东西是要放在${OpenCV_BINARY_DIR}/3rdparty/ippicv中的,即(这是我自己的路径)
但是这个压缩包解压时会出现问题。解压这个.lib文件时会出错:
所以我们先手动下载另一个版本ippicv_2017u2_win_intel64_20170418.zip的压缩包,解压后进行了替换。
链接为:
将ippicv_2017u2_win_intel64_20170418.zip文件夹中ippicv_win文件夹和ippiw_win文件夹按Cmake文件中描述的拷贝至${OpenCV_BINARY_DIR}/3rdparty/ippicv即,如下:
再修改ippicv.cmake文件,修改前需要备份,将下载压缩包的语句删除掉:(红框部分)
再按(1)中的步骤,删除 除了3rdparty文件夹的其他东西。重新打开Cmake,点击Configure进行配置。
(3)重新配置后提示配置完成,如下图:
在上面的红色部分找到OPENCV_EXTRA_MODULES_PATH,将其设定为之前opencv_contrib的modules文件夹路径。如下:
再次点击configure进行配置,此时显示。
说明在下载tiny-dnn包。相关的cmake文件在
(你自己存放源码的文件夹路径)\source\opencv_contrib-master\modules\dnn_modern的CmakeList.txt中
下载时,文件缓存在(你自己存放源码的文件夹路径)\source\opencv3.3.1\.cache\tiny_dnn目录下,文件差不多有12M,网络情况不好时会下载超时,如下图。
我网比较好,下载N次后成功了。可将我提供的下载好的包拷贝至相关目录并解压:
(我的是)D:\opencv3\source\opencv3.3.1\.cache\tiny_dnn
然后修改CmakeList.txt文件,修改前备份。修改如下:
即删掉下载文件对应语句,再按之前说的,重启Cmake后配置。最后显示配置完成:
最后点击Generate生成工程。
PS:如果编译时遇到如下问题:
无法解析的外部符号 _DllMainCRTStartup
找到对应工程opencv_surface_matching。在其工程属性—链接器—高级中,将无入口点改为是(/NOENTRY),保存后重新编译整个项目或单独编译该工程。
对于Release同样设置后进行编译。