为什么要扩展编译?
1)由于opencv功能越来越臃肿,opencv3改变了项目架构,使用内核+插件的架构形式。在Github中,除了存放正式版OPENCV的主仓库和新增加的opencv_extra仓库外,还添加了一个opencv_contrib的全新仓库,功能有:脸部识别、文本识别、边缘检测、追踪算法等,里面存放的是功能未稳定的代码,如果需要使用这些功能,就需要重新进行编译。
2)官方的opencv3.1.0需要在x64上运行,cmake后才可以在x86上运行;
3)通过cmake之后,可以看到源码。
opencv3.1.0下载地址:官网。
opencv_contrib-master下载地址:github上。http://github.com/itseez/opencv_contrib
cmake文件下载地址:官网3.5.2.下载解压即可使用cmake-gui.exe(cmake-3.5.2-win32-x86)
硬件配置:win7,64位,vs2015,opencv310
1、下载以上软件
2、opencv安装:解压即可。cmake-gui.exe也是通过解压即可。
3、打开cmake-gui.exe,进入如下界面,填写相应的参数,包括Opencv源码目录和opencv.sln工程的导出目录,开始导出opencv.sln工程。
我的分别是:D:/software/opencv310/opencv/sources. D:/software/opencv310/MYBUILD
4、点击configure,选择编译器,我选择的是visual studio 14 2015 win64编译器。点击finish。
在过程中可能会出现以下问题:
1)cmake warning at cmake/opencvutils.cmake:872(message):Download :load copy of opencv_ffmpeg.dll has invalid MDS hash:96b7a1645c95cd28b7c534a03149c270 call stack ...等等。这可能是由于下载网速的问题
2)同样也会出现:ippcv等问题
解决方案是:在网络上下载好opencv_ffmpeg.dll以及opencv_ffmpeg_64.dll以及ippicv_windows_20151201.zip放入相应的文件夹。具体放入哪个文件夹由于在configure过程中已经有相应名称文件存在,只要将下载的文件覆盖原文件即可。
5、第一次编译完成后,需要将额外的opencv_contrib加入到工程中第二次编译,在配置表中找到“OPENCV_EXTRA_MODUALS_PATH”,设置其参数值为opencv_contrib源码包中的modules目录,我的目录是:D:\software\opencv310\opencv_contrib-master\modules,设置完成后,点击configure进行第二次编译。
6、第二次编译后,点击generate,发现生成了OPENCV_sln工程文件。
7、接下来需要生成相应的lib以及dll文件等:打开OPENCV_sln文件,选择debug x64环境,并选择重新生成解决方案,生成之后,找到CMakeTargets中的INSTALL,点击右键-仅用于项目-仅生成INSTALL,完成后多了一个install文件夹。
8、release版本同样进行相同的操作。至此,所有的编译以及生成工作完成。
9、接下来需要重新配置环境以debug版本为例:
1)用户变量配置:D:\software\opencv310\MYBUILD\install\x64\vc14\bin
2)重新配置项目环境:
包含目录:D:\software\opencv310\MYBUILD\install\include;D:\software\opencv310\MYBUILD\install\include\opencv;
D:\software\opencv310\MYBUILD\install\include\opencv2;
库目录:D:\software\opencv310\MYBUILD\install\x64\vc14\lib;D:\software\opencv310\MYBUILD\install\x64\vc14\staticlib
3)附加依赖库:
opencv_aruco310d.lib
opencv_bgsegm310d.lib
opencv_bioinspired310d.lib
opencv_calib3d310d.lib
opencv_ccalib310d.lib
opencv_core310d.lib
opencv_datasets310d.lib
opencv_dnn310d.lib
opencv_dpm310d.lib
opencv_face310d.lib
opencv_features2d310d.lib
opencv_flann310d.lib
opencv_fuzzy310d.lib
opencv_highgui310d.lib
opencv_imgcodecs310d.lib
opencv_imgproc310d.lib
opencv_line_descriptor310d.lib
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_optflow310d.lib
opencv_photo310d.lib
opencv_plot310d.lib
opencv_reg310d.lib
opencv_rgbd310d.lib
opencv_saliency310d.lib
opencv_shape310d.lib
opencv_stereo310d.lib
opencv_stitching310d.lib
opencv_structured_light310d.lib
opencv_superres310d.lib
opencv_surface_matching310d.lib
opencv_text310d.lib
opencv_tracking310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib
opencv_xfeatures2d310d.lib
opencv_ximgproc310d.lib
opencv_xobjdetect310d.lib
opencv_xphoto310d.lib
ippicvmt.lib
至此,完成全部工作。