【学习opencv】Win10+VS2015+OpenCv3.2.0+OpenCv_contrib3.2.0+CMAKE3.8.1编译OpenCv源代码

[cpp]  view plain  copy
  1. /************************************************************************************************************************ 
  2. 文件说明: 
  3.         使用Cmake编译OpenCv的源代码 
  4. 环境配置: 
  5.         Win10+Cmake3.8.1+VS2015+OpenCv3.2.0+OpenCv_contrib3.2.0 
  6. 时间地点: 
  7.         陕西师范大学 文津楼 2017.5.23 
  8. 作    者: 
  9.         九月 
  10. ************************************************************************************************************************/  
  11. /************************************************************************************************************************ 
  12. (一)前言 
  13.     去年去公司实习的时候,被Haclon的强大功能所折服,但是Halcon的功能虽然十分精准,实时,但是奈何人家是私有的库,所以对于 
  14. 我们这些研究生来说,是没有什么意义可言的。所以还是一如既往的喜欢OpenCv吧! 
  15.     OpenCv的源代码,一般分为两部分,OpenCv和OpenCv_contrib;OpenCv是一些性能稳定的算法,但是不是最近的科研成果。Contrib 
  16. 部分则包含了一些计算机视觉领域最新的科研成果,但是性能不是那么稳定,其实这部分代码经过优化和改进之后也是可以商用的,尤其是 
  17. 对于像我这种需要发论文的小硕来说,意义重大。 
  18.     当然,今天编译这个,是因为研究的一篇2016年的论文,其实现的源代码被包含在OpenCv_contrib部分,所以,昨天晚上花了一晚上的 
  19. 时间编译一些这个东东。 
  20.     中间遇到了一些问题,所以做一下笔记,以便以后参考。 
  21. (二)准备工作 
  22.     1)下载OpenCv3.2.0的源代码:https://github.com/opencv/opencv 
  23.     2)下载OpenCv3.2.0的OpenCv_contrib源代码:https://github.com/opencv/opencv_contrib 
  24.     3)下载Cmake3.8.1: 
  25.            https://cmake.org/download/
  26.     4)下载OpenCv的opencv_extra,这个里面包含了一些实验数据和部分源代码,在配置好环境之后,可以暂时不下,作为测试的时候使用: 
  27.       https://github.com/opencv/opencv_extra 
  28. ************************************************************************************************************************/  

[cpp]  view plain  copy
  1. /************************************************************************************************************************ 
  2. (三)注意的问题: 
  3.     1)需要说明的是,大家都知道OpenCv自3.0.0开始,不仅支持CUDA实时性的计算机视觉算法,而且还支持Matlab,python,java等语言, 
  4.       但是需要说明的是,如果你需要CUDA、Matalb、python、java等接口,你需要先提前配置好相应的环境。 
  5.       1)比如说我:我需要CUDA这种实时性计算机视觉算法库,所以我必须提前配置好windos下的CUDA环境,并且电脑必须有显卡。 
  6.       2)比如说我:需要OpenCv的python语言接口,我也需要配置好python的相应环境,这样生成的时候,才会生成相应语言的接口,不然 
  7.         就只有cpp的接口,其他的接口是看不到的。 
  8.     2)OpenCv和OpenCv_contrib的源代码最好从GitHub上下 
  9.     3)Cmake建议使用3.8.0后者3.8.1最新的,很多帖子,建议不要使用最新的,它们应该是在用CMake编译的时候,配置出现了问题,所 
  10.       以才会出错,和人家Cmake是没有关系的(根据经验,猜测的) 
  11.     4)当然,你也可以使用VS2012,vs2013进行编译,这样,编译出来的动态dll和静态lib就可以在相应的VS环境中使用,我在这块之所以 
  12.       使用vs2015,是因为OpenCv官方的的release版本是15,所以为了减少错误,我就用了15,理论上VS2010-2015都可以使用,这没什么问 
  13.       题。 
  14. (四)开始编译 
  15.     1)第一次编译的时候,首先将OpenCv的源代码导入,建议先进行配置,然后再进行编译,这样做的是因为,如果配置有问题,我们可 
  16.        以根据提示进行相应的修改,以保证下面的过程顺利进行。 
  17. ************************************************************************************************************************/  

[cpp]  view plain  copy
  1. /************************************************************************************************************************ 
  2.        1)注意,如果想要生成32位的,选择Visual Studio 12 2013 的选项 
  3.        2)生成过程比较漫长,因为要下载几个文件  
  4.        3)这几个文件的服务器都在国外,因此,可能有下载失败的情况,如果失败,那么可以手动下载然后补充在提示的文件夹即可 
  5.        4)生成之后的图像如下所示  
  6. ************************************************************************************************************************/  

[cpp]  view plain  copy
  1. /************************************************************************************************************************ 
  2.     2) 第二次编译,编译之前,先配置 opencv_ contrib的路径,在OPENCV_EXTRA_MODULES_PATH 的属性下配置路径,然后进行配置,最后 
  3.        进行编译,如果您的电脑没有Caffe,cuda等,就在CMake中却掉相应的配置选项。 
  4.        注意:OPENCV_EXTRA_MODULES_PATH一定是modelus的路径,比如D:\Personal\Desktop\opencv_contrib-master\modules, 
  5.        modules文件夹的路径 
  6. ************************************************************************************************************************/  


[cpp]  view plain  copy
  1. /************************************************************************************************************************ 
  2.     2)然后直接Open Project即可,至此,Visual Studio2015打开,Cmake的任务完成,可以关掉了。打开VS之后,可以看到完整的 
  3.        OpenCV3.2 项目,我这里有120项,但有的教程是114,不同的原因在于电脑上装了MatLab或CUDA等其他图形图像处理的软件,这些 
  4.        在之前的Cmake里面都可以设置,如果你知道自己要干什么,可自行设置,如果不懂,还是别乱动了。 
  5. ************************************************************************************************************************/  

[cpp]  view plain  copy
  1. /************************************************************************************************************************ 
  2.     3)在CMakeTargets中找到INSTALL,然后生成INSTALL,得到我们想要的最终文件  
  3. ************************************************************************************************************************/  

[cpp]  view plain  copy
  1. /************************************************************************************************************************ 
  2.     4)最后,在我们的目标生成文件tools中查看最后的结果,只有install是我们需要的结果,其余可以全删掉  
  3. ************************************************************************************************************************/  

[cpp]  view plain  copy
  1. /************************************************************************************************************************ 
  2.     是不是很熟悉? 
  3.     选择Release版,可以生成对应文件,操作步骤与debug相同,如果需要32位,则需要返回到CMake重新配置编译器 
  4. (五)lib文件列表 
  5.     由于debug和release文件最后都放在了一起,因此在配置的时候不能用*.lib的格式,具体文件列表如下:  
  6.     Debug版本: 
  7.     opencv_aruco320d.lib 
  8.     opencv_bgsegm320d.lib 
  9.     opencv_bioinspired320d.lib 
  10.     opencv_calib3d320d.lib 
  11.     opencv_ccalib320d.lib 
  12.     opencv_core320d.lib 
  13.     opencv_datasets320d.lib 
  14.     opencv_dpm320d.lib 
  15.     opencv_face320d.lib 
  16.     opencv_features2d320d.lib 
  17.     opencv_flann320d.lib 
  18.     opencv_fuzzy320d.lib 
  19.     opencv_imgcodecs320d.lib 
  20.     opencv_imgproc320d.lib 
  21.     opencv_highgui320d.lib 
  22.     opencv_line_descriptor320d.lib 
  23.     opencv_ml320d.lib 
  24.     opencv_objdetect320d.lib 
  25.     opencv_optflow320d.lib 
  26.     opencv_phase_unwrapping320d.lib 
  27.     opencv_photo320d.lib 
  28.     opencv_plot320d.lib 
  29.     opencv_reg320d.lib 
  30.     opencv_rgbd320d.lib 
  31.     opencv_saliency320d.lib 
  32.     opencv_shape320d.lib 
  33.     opencv_stereo320d.lib 
  34.     opencv_stitching320d.lib 
  35.     opencv_structured_light320d.lib 
  36.     opencv_superres320d.lib 
  37.     opencv_surface_matching320d.lib 
  38.     opencv_text320d.lib 
  39.     opencv_tracking320d.lib 
  40.     opencv_video320d.lib 
  41.     opencv_videoio320d.lib 
  42.     opencv_videostab320d.lib 
  43.     opencv_xfeatures2d320d.lib 
  44.     opencv_ximgproc320d.lib 
  45.     opencv_xobjdetect320d.lib 
  46.     opencv_xphoto320d.lib 
  47. Release版本: 
  48.     opencv_aruco320.lib  
  49.     opencv_bgsegm320.lib  
  50.     opencv_bioinspired320.lib  
  51.     opencv_calib3d320.lib  
  52.     opencv_ccalib320.lib  
  53.     opencv_core320.lib  
  54.     opencv_datasets320.lib  
  55.     opencv_dpm320.lib  
  56.     opencv_face320.lib  
  57.     opencv_features2d320.lib  
  58.     opencv_flann320.lib  
  59.     opencv_fuzzy320.lib  
  60.     opencv_highgui320.lib  
  61.     opencv_imgcodecs320.lib  
  62.     opencv_imgproc320.lib  
  63.     opencv_line_descriptor320.lib  
  64.     opencv_ml320.lib  
  65.     opencv_objdetect320.lib  
  66.     opencv_optflow320.lib  
  67.     opencv_phase_unwrapping320.lib  
  68.     opencv_photo320.lib  
  69.     opencv_plot320.lib  
  70.     opencv_reg320.lib  
  71.     opencv_rgbd320.lib  
  72.     opencv_saliency320.lib  
  73.     opencv_shape320.lib  
  74.     opencv_stereo320.lib  
  75.     opencv_stitching320.lib  
  76.     opencv_structured_light320.lib  
  77.     opencv_superres320.lib  
  78.     opencv_surface_matching320.lib  
  79.     opencv_text320.lib  
  80.     opencv_tracking320.lib  
  81.     opencv_video320.lib  
  82.     opencv_videoio320.lib  
  83.     opencv_videostab320.lib  
  84.     opencv_xfeatures2d320.lib  
  85.     opencv_ximgproc320.lib  
  86.     opencv_xobjdetect320.lib  
  87.     opencv_xphoto320.lib 
  88. ************************************************************************************************************************/  
[cpp]  view plain  copy
  1. /************************************************************************************************************************ 
  2. (六)配置OpenCv的环境,测试程序 
  3. ************************************************************************************************************************/  


[cpp]  view plain  copy
  1. /************************************************************************************************** 
  2.        1)相比于vs2010,vs2012,vs2013,VS2015用起来还是非常适合开发人员的,尤其是干高性能计算的人员, 
  3.           这可以实时观测算法的性能,是不是很吊,cuda计算机视觉的,推荐使用vs2015 
  4.        2)我这块测试了一个OpenCv_contrib里面的程序,正在运行,说明环境配置的没问题。 
  5. **************************************************************************************************/  


[cpp]  view plain  copy
  1. /************************************************************************************************** 
  2. 测是阶段有可能出现的问题: 
  3.       1)我在按照常规的OpenCv环境配置完整之后,出现了动态库链接不到的问题,我的解决办法如下所示,有点 
  4.         暴力: 
  5.       2)打开项目生成的exe文件所在的目录,例如我的: 
  6.            C:\Users\wei\Documents\Visual Studio 2015\Projects\demo1\x64\Debug 
  7.       3)将生成的opencv的dll库全部复制到这个目录下:例如我生成的dll库目录如下所示: 
  8.            C:\opencv_base_contrib\x64\vc14\bin 
  9.       4)然后,在此编译,运行程序即可 
  10. **************************************************************************************************/  


参考博客如下所示:

博客链接:http://blog.csdn.NET/cv_jason/article/details/70037545

下面的博客配置有点小问题,不过思路和过程是对的,非常好!

Cmake编译opencv contrib部分

1. 前言

最近才知道,在OpenCV3.0 之后,OpenCV算法包被拆分成两部分,官方发布的OpenCV包只包含最基础最稳定的部分,而某些图像处理的经典算法如SIFT和SURF等被封装到opencv_contrib中。如果想要使用这些包,还需要自己另外编译。这些天看了好多帖子,终于把这件事做成了,现在梳理一下。

2. 准备工作

opencv3.2 源文件下载链接:https://github.com/opencv/opencv 
opencv_contirb 源文件下载链接:https://github.com/opencv/opencv_contrib 
cmake下载链接:https://cmake.org/files/v3.8/cmake-3.8.0-rc4-win64-x64.msi

注意事项

  1. opencv源代码的下载必须是github上面的,这是最完整的版本,之前用官方主页上的解压包进行编译,中途会失败,虽然有的帖子中也是以官方主页上的解压包进行演示,但这几天亲测该方法无效,GitHub上有效; 
  2. 很多帖子建议cmake不要用太高的版本,但实测cmake最新版不会出现任何问题。

3. 开始编译

下载完opencv之后,直接解压即可,在GitHub下载的解压包,都有master的后缀 

安装Cmake的过程比较简单,不再介绍,这里直接讲Cmake的使用 
 
注意,两个路径中,都不能有中文或者空格(最常见的Program Files文件夹也不行),否则容易出错 
 
注意,如果想要生成32位的,选择Visual Studio 12 2013 的选项

生成过程比较漫长,因为要下载几个文件 

这几个文件的服务器都在国外,因此,可能有下载失败的情况,如果失败,那么可以手动下载然后补充在提示的文件夹即可

生成完之后长这样 

配置 opencv_ contrib的路径,在OPENCV_EXTRA_MODULES_PATH 的属性下配置路径,我这里是 
D:\Personal\Desktop\opencv_contrib-master\modules 
 
注意,一定是modules文件夹的路径

配置玩之后,点击Generate,生成的结果如下: 
 
然后直接Open Project即可

至此,Visual Studio2013打开,Cmake的任务完成,可以关掉了。

打开VS之后,可以看到完整的OpenCV3.2 项目,我这里有120项,但有的教程是114,不同的原因在于电脑上装了MatLab或CUDA等其他图形图像处理的软件,这些在之前的Cmake里面都可以设置,如果你知道自己要干什么,可自行设置,如果不懂,还是别乱动了。

然后直接编译即可了,这个过程比较慢,我I5 2450U 3.0GHz的处理器,大概跑了10分钟

最后结果

在CMakeTargets中找到INSTALL,然后生成INSTALL,得到我们想要的最终文件 

最后,在我们的目标生成文件tools中查看最后的结果 

只有install是我们需要的结果,其余可以全删掉 

是不是很熟悉?

选择Release版,可以生成对应文件,操作步骤与debug相同 
如果需要32位,则需要返回到CMake重新配置编译器

4. lib文件列表

由于debug和release文件最后都放在了一起,因此在配置的时候不能用*.lib的格式,具体文件列表如下: 
debug版 
opencv_aruco320d.lib 
opencv_bgsegm320.lib 
opencv_bioinspired320d.lib 
opencv_calib3d320d.lib 
opencv_ccalib320d.lib 
opencv_core320d.lib 
opencv_datasets320d.lib 
opencv_dpm320d.lib 
opencv_face320d.lib 
opencv_features2d320d.lib 
opencv_flann320d.lib 
opencv_fuzzy320d.lib 
opencv_imgcodecs320d.lib 
opencv_imgproc320d.lib 
opencv_highgui320d.lib 
opencv_line_descriptor320d.lib 
opencv_ml320d.lib 
opencv_objdetect320d.lib 
opencv_optflow320d.lib 
opencv_phase_unwrapping320d.lib 
opencv_photo320d.lib 
opencv_plot320d.lib 
opencv_reg320d.lib 
opencv_rgbd320d.lib 
opencv_saliency320d.lib 
opencv_shape320d.lib 
opencv_stereo320d.lib 
opencv_stitching320d.lib 
opencv_structured_light320d.lib 
opencv_superres320d.lib 
opencv_surface_matching320d.lib 
opencv_text320d.lib 
opencv_tracking320d.lib 
opencv_video320d.lib 
opencv_videoio320d.lib 
opencv_videostab320d.lib 
opencv_xfeatures2d320d.lib 
opencv_ximgproc320d.lib 
opencv_xobjdetect320d.lib 
opencv_xphoto320d.lib

release版 
opencv_aruco320.lib 
opencv_bgsegm320.lib 
opencv_bioinspired320.lib 
opencv_calib3d320.lib 
opencv_ccalib320.lib 
opencv_core320.lib 
opencv_datasets320.lib 
opencv_dpm320.lib 
opencv_face320.lib 
opencv_features2d320.lib 
opencv_flann320.lib 
opencv_fuzzy320.lib 
opencv_highgui320.lib 
opencv_imgcodecs320.lib 
opencv_imgproc320.lib 
opencv_line_descriptor320.lib 
opencv_ml320.lib 
opencv_objdetect320.lib 
opencv_optflow320.lib 
opencv_phase_unwrapping320.lib 
opencv_photo320.lib 
opencv_plot320.lib 
opencv_reg320.lib 
opencv_rgbd320.lib 
opencv_saliency320.lib 
opencv_shape320.lib 
opencv_stereo320.lib 
opencv_stitching320.lib 
opencv_structured_light320.lib 
opencv_superres320.lib 
opencv_surface_matching320.lib 
opencv_text320.lib 
opencv_tracking320.lib 
opencv_video320.lib 
opencv_videoio320.lib 
opencv_videostab320.lib 
opencv_xfeatures2d320.lib 
opencv_ximgproc320.lib 
opencv_xobjdetect320.lib 
opencv_xphoto320.lib

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值