Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码

【起因】:想试下SIFT提取特征点,但是opencv3.x以后的版本中去除了opencv2.x中不稳定的模块,所以要想在opencv3中用contrib模块就要自己编译了。这个在网上也有很多教程,我也跟着实践了一把,踩了很多坑,在这里分享一下,免得后面的小伙伴们多走弯路。

【准备】:

(工欲善其事必先利其器,工具和源码的准备是必不可少的。)

1.下载CMake,点击Cmake官网的下载界面,点击下载对应版本的Cmake就可以了。安装教程我就不说了,网上一大堆,而且windows下的软件安装一般都很傻瓜——next。最后,要记得把把Cmake路径下的bin文件夹路径加入到电脑的环境变量。(我用的版本是3.13.4)

2.opencv3.4.5和opencv_contribute3.4.5的源码

opencv3.4.5下载地址:https://github.com/opencv/opencv/releases

opencv_contribute3.4.5下载地址:https://github.com/opencv/opencv_contrib/releases

(我的都是在github上下载的,opencv也可以在官网上直接下载,不过看有的人记录出现官网opencv源码和github上opencv_contribute不匹配问题,但不是绝对,不怕麻烦的可以尝试一下,嘎嘎)

3.vs2015这个更不多说了,其他版本可以,这个影响不大

4.安装python3.6.8  32位版本(安装python必不必须我不清楚,但由于我电脑上有python,给我埋下很大一个坑,因为我刚开始安装的是python 64位的,编译时产生了模块计算机x64和目标计算机x86不兼容的问题,解决办法:1.暴力得卸了重装32位的python,2.费事的创建虚拟环境安装32位的python,在Configure那一步将所有python3所需链接地址都改为虚拟环境里的32位python)ps:32位版本是根据自己需求来选的,如果你想在x86平台上用的话,就下32位,后面编译时也都要选32位平台,如果想在x64平台上用的话,后面编译时都选64位

【开始】:

一、下载后的目录这样的,在opencv-3.4.5解压后的文件夹下自己创建build文件夹,用来存放cmake生成后的文件(生成后我们需要的include、lib、dll文件都在这里面),同时将opencv_contribute3.4.5也复制进来(我喜欢一次性搞定,网上也有分开编译的)。结构如下图:

Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第1张图片

 

接着,打开cmake-gui,记着一定要在管理员权限下运行,不然的话有些东西写不进c盘,后面在vs2015里编译时会出现MSB3073错误(这个错误是我的账户不是管理员,如果你的账户是管理员,就直接跳过)。

这处忘记截图啦,只好倒别人的,步骤都是一样的(我安装的是opencv3.4.5)

Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第2张图片

二、上一步完了,会出现下面的图,但先不要急着Generate,还要再次Configure,这里坑很多:

Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第3张图片

  这里要灰常注意,需要多说一句,CMAKE这个地方是最容易出现问题的地方,一方面是因为CMAKE这里的信息很多,大家有可能会感到无法适应;一方面是因为CMAKE大家接触的比较少,不是很熟悉;再加上CMAKE的过程中,有时需要再从网络上下载一些东西,如果网络不好的话,也会导致失败。

需要注意有四点:

1.这时候会连网下载一些配置文件,因为这些东西都是国外网站下载的,能的尽量,下载超时失败的也不要灰心,还有方案two。爆红的地方会显示错误的行数:直接在cmakeDownloaderLog.txt中找到对应行数,往前几行找到相应地址,手动下载后放到.cache文件中相应位置。详细过程:请参考:https://blog.csdn.net/qq_34132426/article/details/81359132

或者去网上找别人下好的对应版本的缺失文件。经常下载不下来的文件有:

opencv_ffmpeg.dll  opencv_ffmpeg_64.dll  ffmpeg_version.cmake及ippicv_2017u3_win_intel64_general_20170822.zip

(我的文件我会一起打包好在后面方便大家下载)

2.要将OPENCV_ENABLE_NONFREE打开!!!(不然后面编译会出错)

3.其中OPENCV_EXTRA_MODULES_PATH中要填入opencv_contribute3.4.5下面的modules目录

tips:可以在search中搜索要找的内容

Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第4张图片

4.静态库和动态库的选择体现在是否选择BUILD_SHARED_LIBS(默认是选中的)。如果选择静态库,那么最后生成的程序和支持库是打包到一起的,交付起来比较方便;如果是动态库则是分开的。效能问题没有研究过。新上手的选择默认动态库。同时建议将BUILD_opencv_world选中,这样最后的结果是一个文件。(看这个教程的估计都是新手,还是默认吧,急着把BUILD_opencv_world选中,否则后面你要手工复制粘贴的东西很多)

Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第5张图片

 三、再次Configure,configure最好不要爆红,一定不要有error,否则一定编译不过。再次configure成功后的图片:Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第6张图片

configure通过后,Generate也不会有大问题。

四、Generate后,打开build文件,找到OpenCV.sln,用vs2015打开,设定release版 win32平台,选择install项目开始生成编译,这个时间会有点长。

Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第7张图片

Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第8张图片

五、编译完成后,可以查看build中 install文件夹下的文件,这就是我们需要的。

Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第9张图片

六、测试一下

Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第10张图片

效果:

Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码_第11张图片

KO!

tips:如果,很巧,你也用opencv3.4.5+win10+VS2015,那我编译好的这份install 刚好适用于你,可以自行下载,请戳:https://download.csdn.net/download/qq525003138/11287548#0-qzone-1-10753-d020d2d2a4e8d1a374a433f596ad1440。

主要参考博客:

https://www.cnblogs.com/jsxyhelu/p/7513120.html

https://blog.csdn.net/qq_34132426/article/details/81359132

 

你可能感兴趣的:(Windows10下Cmake+vs2015编译opencv3.4.5和opencv_contribute源码)