Win10+VS2015+OpenCv3.2.0+OpenCv_contrib3.2.0+CMAKE3.8.1编译OpenCv源代码

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

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

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

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


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

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

/************************************************************************************************************************
	4)最后,在我们的目标生成文件tools中查看最后的结果,只有install是我们需要的结果,其余可以全删掉 
************************************************************************************************************************/

/************************************************************************************************************************
	是不是很熟悉?
    选择Release版,可以生成对应文件,操作步骤与debug相同,如果需要32位,则需要返回到CMake重新配置编译器
(五)lib文件列表
    由于debug和release文件最后都放在了一起,因此在配置的时候不能用*.lib的格式,具体文件列表如下: 
	Debug版本:
	opencv_aruco320d.lib
	opencv_bgsegm320d.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
************************************************************************************************************************/
/************************************************************************************************************************
(六)配置OpenCv的环境,测试程序
************************************************************************************************************************/


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


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


参考博客如下所示:

博客链接: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



你可能感兴趣的:(OpenCv专栏,CV_计算机视觉,C/C++)