win10+vs2015+CMake 3.12.2编译opencv3.4.0源码

1.为何要编译opencv源码?

  (1)想查看OpenCV自带的函数的源代码,比如函数cvCreateImage, 点击鼠标右键->转到定义,只能看到cvCreateImage的一个简单声明,而没有源代码。这是因为opencv将很多函数被加入了函数库,并被编译成了dll,所以只能看到函数申明,没法看到源代码。

(2)为何需要自行编译opencv3.4.0与opencv_contrib3.4.0

       因为在3.0之后版本的Opencv对Sift、Sufer等新算法没有提供直接编译好的动态库来加载使用,因此必须自己编译。这是因为Sift、Sufer算法专利现在是属于哥伦比亚大学,因此opencv对这部分内容及“所谓的”不稳定模块全都放到opencv_contrib中。且只在它的Github中能够找到,opencv的官网上是没有的。因此对于想使用Sift、Sufer、双目立体匹配算法、结构光等新的算法及有专利权算法,需要自行编译。

选择不同的编译器类型,生成高度还原的OpenCV开发时的解决方案工程文件,欣赏OpenCV新版本中总计 六十六多万行的精妙源代码。我们可以对其源代码进行再次编译,得到二进制文件,或者修改原版官方的OpenCV代码,并编译后为自己所用,深入理解OpenCV源码。

 

2.系统环境

系统:win10 64位 

其它:VS2015    CMake 3.12.2

 

3.opencv3.4.0源码下载

下载opencv3.4.0与opencv_contrib3.4.0相对应的版本。

1)Opencv3.4.0版本源码(.zip文件):https://github.com/opencv/opencv/releases

2)opencv_contrib3.4.0版本源码(.zip文件):https://github.com/opencv/opencv_contrib/releases

下载完成后,解压到自定义的安装目录下(D:\thirdLib\opencv\opencvTest)。

 

4.Cmake3.12.2编译Opencv3.4.0

camke官网:http://www.cmake.org/   下载安装cmake即可。

解压后修改opencv-3.4.0为opencv340,并在该文件夹中新建文件夹build。

1)打开CMake的gui界面,按下图所示操作:

源码路径“Where is the source code”选择刚才解压后的Opencv3.4.0源码,本文解压到了D:\thirdLib\opencv\opencvTest\opencv340路径下,这个需要按照你的路径自行选择。

编译输出路径“Where to build the binaries”,本文新建文件夹“build”路径为D:\thirdLib\opencv\opencvTest\opencv340\build,同样这个需要按照你的路径自行选择。

2)单击“configure”,弹出选择编译器界面,选择Visual Studio 14 2015 win64 ,单击“Finish”即可开始编译。

3)这个过程会出现很多错误需耐心反复编译,主要原因是需要从国外网站下载文件,若下载失败就编译不通过,以红色显示。

若失败,可在编译输出路径D:\thirdLib\opencv\opencvTest\opencv340\build中打开CMakeDownloadLog.txt文件里面有下载失败文件的连接及下载文件要保存到本地的路径。

可自己下载并放到指定的文件夹中。最常下载失败的:opencv_ffmpeg.dll  opencv_ffmpeg_64.dll  ffmpeg_version.cmake及ippicv_2017u3_win_intel64_general_20170822.zip

过程中可能出现如下报错:

CMake Error at cmake/OpenCVFindLibsVideo.cmake:221 (include):
include could not find load file:
D:/thirdLib/opencv/opencvTest/opencv340/build/3rdparty/ffmpeg/ffmpeg_version.cmake
Call Stack (most recent call first):
CMakeLists.txt:602 (include)

【不知道什么原因,过几天重新configure时,上面的错误消失了,成功下载了上面的文件】

成功下载的D:\thirdLib\opencv\opencvTest\opencv340\.cache文件夹中如下:

ffmpeg文件夹中如下:

4)同时需要勾选 BUILD_opencv_world:主要是把所有的lib文件都弄到一个opencv_world340d.lib中方便配置,若不勾选在最后会产生大概38个.lib文件。

勾选 BUILD_EXAMPLES:编译OPencv自带的例程。

完成后再次单击“Configure”即可。单击“Configure”直到没有红色显示为止。

点击”Generate“完成工程创建。在D:\thirdLib\opencv\opencvTest\opencv340\build下打开.sln工程,进行编译,结果如下。【此时已编译完opencv的源码】

 

5.Cmake3.12.2编译opencv_contrib3.4.0

在cmake界面,OPENCV_EXTRA_MODULES_PATH 选择为解压的opencv_contrib3.4.0文件中的“modules”即D:/thirdLib/opencv/opencvTest/opencv_contrib340/modules 。注意斜杠方向。如下图:

单击“Configure”,

【同样需要到build中的CMakeDownloadLog.txt中找到下载链接自行下载,并放到指定的位置。此部分下载失败常有:boostdesc_bgm.i   boostdesc_bgm_bi.i  boostdesc_bgm_hd.i  boostdesc_binboost_064.i  及face_landmark_model.dat  同样找到下载并替换。(这里可能需要多次的反复才能完成,需要耐心)】


成功后出现Configuring done【红色消失】;

点击”Generate“完成工程创建。这时候就编译好了opencv-3.4.0 + opencv_contrib-3.4.0的源码。可以打开.sln工程查看代码。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值