开门见山,亲测有效!欢迎大家使用。翻译下文章标题:vs2015下Cmake3.11.1编译Opencv3.4及opencv_contrib3.4在Windows10。
关于vs版本:其实没有关系,用2013一样的。opencv3一般是vs2012以上版本,感兴趣的可以查一下对应的版本。VS2015是VC14.
补充:vc8 = Visual Studio 2005,vc9 = Visual Studio 2008,vc10 = Visual Studio 2010,vc11 = Visual Studio 2012,vc12 = Visual Studio 2013,vc14 = Visual Studio 2015
我就做做笔记,对你有用可以转发,标注出处即可,喜欢分享,喜欢讨论,希望你有好东西也一起分享。在开始的时候,想必大家和我一样有一个疑惑,为什么我们要CMake?看opencv3入门这本书上是说使用CMake来编译OpenCV源代码。
1.原因
(1)具体解释为:当我们有时想查看OpenCV自带的函数的源代码,比如函数cvCreateImage, 此时我们选中cvCreateImage, 点击鼠标右键->转到定义,我们会很惊讶的发现为什么只看到了cvCreateImage的一个简单声明,而没有源代码呢?这是因为opencv将很多函数被加入了函数库,并被编译成了dll,所以只能看到函数申明,没法看到源代码。下面我们详细解释并讲解如何利用cmake查看opencv的源代码。
我的安装目录在D:/Nyy/image/Opencv_Sourse/opencv34。在这个目录下面还有很多子目录:3rdparty、android、build,data、doc、include、modules、samples和很多cmake文件。build目录是编译生成的目录,就是用openCV源代码编译生成的2进制库文件集(dll、lib和入口头文件include)。对于编程来说,仅仅需要build这一个文件夹就可以了。那么其他文件夹是用来干什么的呢?其实源代码就包含在这些文件夹下面,因为build文件夹就是在其他文件夹的基础上CMake编译生成的。大部分源代码放在modules文件夹下例如,core文件夹下就包含了基本数据类型的定义,imgproc文件夹下包含了常用的数字图像处理函数源代码:如cvCanny()、cvSobel()。
(2)为何需要自行编译opencv3.4与opencv_contrib3.4
因为在3.0之后版本的Opencv对Sift、Sufer等新算法没有提供直接编译好的动态库来加载使用,因此必须自己编译。这是因为Sift、Sufer算法专利现在是属于哥伦比亚大学,因此opencv对这部分内容及“所谓的”不稳定模块全都放到opencv_contrib中。且只在它的Github中能够找到,opencv的官网上是没有的。因此对于想使用Sift、Sufer、双目立体匹配算法、结构光等新的算法及有专利权算法的同学需要自行编译。
选择不同的编译器类型,生成高度还原的OpenCV开发时的解决方案工程文件,欣赏OpenCV新版本中总计 六十六多万行的精妙源代码。我们可以对其源代码进行再次编译,得到二进制文件,或者修改原版官方的OpenCV代码,并编译后为自己所用,为深入理解OpenCV的开源魅力迈出了坚实的一步。
2:如何利用cmake查看opencv的源代码
(1)下载opencv3.4与opencv_contrib3.4相对应的版本
下载需要的Opencv3.4版本源码 https://github.com/opencv/opencv/releases
两者有什么区别,前者是exe文件,需要经过CMake才能看到源代码,后者其实是一个压缩的opencv文件,