/************************************************************************************************************************
文件说明:
使用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
下面的博客配置有点小问题,不过思路和过程是对的,非常好!
最近才知道,在OpenCV3.0 之后,OpenCV算法包被拆分成两部分,官方发布的OpenCV包只包含最基础最稳定的部分,而某些图像处理的经典算法如SIFT和SURF等被封装到opencv_contrib中。如果想要使用这些包,还需要自己另外编译。这些天看了好多帖子,终于把这件事做成了,现在梳理一下。
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
注意事项
下载完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重新配置编译器
由于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