版权声明:本文为博主原创文章,未经博主允许不得转载。
- /************************************************************************************************************************
- 文件说明:
- 使用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:
- https://cmake.org/download/
- 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
注意事项
- opencv源代码的下载必须是github上面的,这是最完整的版本,之前用官方主页上的解压包进行编译,中途会失败,虽然有的帖子中也是以官方主页上的解压包进行演示,但这几天亲测该方法无效,GitHub上有效;
- 很多帖子建议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