在使用opencv库时,有可能需要使用opencv_contrib中的代码(许多研究者将自己的算法提到这个github项目),但opencv_contrib的使用会依赖于opencv库。本文介绍如何在window下编译opencv3.1.0和opencv_contrib。
1. 下载所需代码和软件
1.1 opencv3.1.0
地址:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.1.0/opencv-3.1.0.exe/download
解压后目录结构如下图:
1.2 opencv_contrib
地址:https://github.com/opencv/opencv_contrib
解压后目录结构如下图:
1.3 CMake
地址:https://cmake.org/download/
可以下载二进制文件,解压后可以直接使用
进入bin文件夹后如下图:
2. 使用cmake生成OpenCV.sln
2.1 双击cmake解压文件夹中bin目录下cmake-gui.exe,填写相应参数
2.2 左下角有一个Configure按钮,需要点击进行配置
此处选择时需要注意生成器的选择,首先vs的版本,其次应用平台(空代表win32,AI代表AMD,win64代表64位)
2.3 第一次点击Configure后,可能会出现下面情况,再点击一次Configure即可
2.4 将opencv_contrib加入到工程中,在配置表在配置表中找到“OPENCV_EXTRA_MODULES_PATH”,设置其参数值为open_contrib源码包中的modles目录
2.5 点击左下角generate按钮,生成OpenCV项目,然后可以发现生成文件目录中出现了一个完整工程。
3. vs打开Opencv.sln工程,编译生成Debug库和Release库,打开后,选择工程,右击,选择“重新生成解决方案”,这里要耐心等待几分钟,如果重新生成解决方案没有错误,继续下一步。
4. 在工程中找到CMakeTargets中的INSTALL,然后右键选择“仅限于项目”–>“仅生成INSTALL”,可以发现”文件存放目录”多了个install文件夹,这就是编译后生成的库文件。
5. 最后,将生成的库文件配置到项目中
5.1 VC++目录–>包含目录,添加:
D:\opencv3.1\tools\opencv_contrib\install\include
5.2 VC++目录–>库目录,添加:
D:\opencv3.1\tools\opencv_contrib\install\x86\vc10\lib
D:\opencv3.1\tools\opencv_contrib\install\x86\vc10\staticlib
5.3 链接器–>输入–>附加依赖项,添加: (下面添加的release的版本,注意添加的库与编译选项要一致,需要注意debug比release的文件名多了个d)
opencv_aruco310.lib
opencv_bgsegm310.lib
opencv_bioinspired310.lib
opencv_calib3d310.lib
opencv_ccalib310.lib
opencv_core310.lib
opencv_datasets310.lib
opencv_dnn310.lib
opencv_dpm310.lib
opencv_face310.lib
opencv_features2d310.lib
opencv_flann310.lib
opencv_fuzzy310.lib
opencv_highgui310.lib
opencv_imgcodecs310.lib
opencv_imgproc310.lib
opencv_line_descriptor310.lib
opencv_ml310.lib
opencv_objdetect310.lib
opencv_optflow310.lib
opencv_photo310.lib
opencv_plot310.lib
opencv_reg310.lib
opencv_rgbd310.lib
opencv_saliency310.lib
opencv_shape310.lib
opencv_stereo310.lib
opencv_stitching310.lib
opencv_structured_light310.lib
opencv_superres310.lib
opencv_surface_matching310.lib
opencv_text310.lib
opencv_tracking310.lib
opencv_ts310.lib
opencv_video310.lib
opencv_videoio310.lib
opencv_videostab310.lib
opencv_xfeatures2d310.lib
opencv_ximgproc310.lib
opencv_xobjdetect310.lib
opencv_xphoto310.lib
ippicvmt.lib
**ps:**opencv_contrib中有些代码是不稳定的,在”重新生成解决方案时”会报错,导致错误代码所在项目无法生成库文件。所以建议需要那部分代码,就只将这部分代码所在项目加入编译。