本文链接
https://blog.csdn.net/fengtaoO08/article/details/81586752
配置
Win10 + opencv 3.1.0 + opencv_contrib 3.1.0 + VS2015社区版 +cmake 3.12.0
总结方法
前言
- 首先需要先装好cmake和vs2015。
- 本文提到的路径需换成你自己安装时的路径。
- 存储空间:我整个装完(Debug和Release都装)后,共20.5G大小- -明明只装opencv只要几百兆的说……
下载源代码
- https://opencv.org/releases.html 下载opencv对应版本的 源代码 (这里是3.1.0,Sources)
https://github.com/opencv/opencv_contrib 下载opencv_contrib对应版本源代码(点release,选择3.1.0版本的zip下载)
新建文件夹OpenCV-3.1.0/opencv,下有sources和build两个文件夹,将下载的opencv源代码以及contribute源代码分别解压到sources里面方便查找。
Cmake生成VS工程
- Cmd运行cmake-gui(如果没有配置好cmake环境变量,就直接找cmake安装文件夹下bin里),分别填入sources文件夹下的 opencv源码文件夹 和build文件夹,点config选VS 2015 Win64(不然的话后面建的的工程没有x64版本)
- 再点config,done后在search框内输入extra,找到OPENCV_EXTRA_MODULES_PATH,填入sources文件夹下的 contribute源码文件夹下的modules文件夹 。点击config,直到done。
- 我的matlab配置貌似有问题,导致出现乱码,干脆不装matlab模块了。因此搜索mat,去掉WITH_MATLAB选项的√
- Contribute的HDF模块貌似代码(hdf5.cpp)写的有问题,导致后面工程编译不通过(真坑,耗费了我大量时间)。而且网上没有搜到解决方法,干脆也不装这个模块了。因此搜索hdf,去掉BULD_opencv_hdf的√。
- 点击config,直到done。再点generate生成VS工程,直到done。然后点击open project就直接用VS2015打开工程了。
VS编译
在VS2015中首先等它读取完工程(我的电脑比较旧了,非常慢)直到就绪。
选择平台版本为x64,然后选解决方案配置,想编译Debug版本就选Debug,想Release就选Release。可以都编译,现在先选一个。
- VS选择生成按钮,选择重新生成解决方案,开始漫长的编译等待(我笔记本电脑很旧很慢了啊,大概2到3小时)
- 编译完成后(结果应该大部分项目都成功,这里是199个,20几个失败我看了下大部分都是cuda相关的模块的,不知道是不是版本不对,暂不管,50几个跳过),会问你项目已被修改,选全部重新加载,等待就绪。
- 在解决方案资源管理器中右键CmakeTargets下的INSTALL,选仅用于项目-》仅生产INSTALL,等待(可能十几分钟?)直到结束就ok
- 这样一波操作之后应该可以build\lib文件夹下的Debug或Release文件夹下找到很多lib库(如果很少说明大部分都没编译成功咯),如果想Debug和Release都装就再选一次解决方案配置,重复一遍上述在VS下的操作。下面进行环境变量配置。
系统环境配置和VS配置
- 环境变量设置的路径应该是build\install下的…install\x64\vc14\bin。即,在我的电脑右键,管理,高级系统设置,高级,环境属性,系统变量列表中的path下加;G:\OpenCV-3.1.0\opencv\build\install\x64\vc14\bin
在VS中,新建项目,到属性管理器Debug和Release下配置分别包含目录、库目录以及链接器输入。可以在Microsoft.Cpp.x64.user属性表中配置,这样以后只要你不换路径,新建项目就直接能用opencv了。例如,右键属性
VC++目录–\>包含目录,添加:
G:\OpenCV-3.1.0\opencv\build\install\include
G:\OpenCV-3.1.0\opencv\build\install\include\opencv
G:\OpenCV-3.1.0\opencv\build\install\include\opencv2
VC++目录–\>库目录,添加:
G:\OpenCV-3.1.0\opencv\build\install\x64\vc14\lib
G:\OpenCV-3.1.0\opencv\build\install\x64\vc14\staticlib
链接器–\>输入–\>附加依赖项,添加(注意,我这里也不知道该加哪些,直接把lib下的全部放进去了,或许不需要加那么多的吧……用哪些加那些好了。这里xx310d.lib放在前面表示优先使用Debug的库):
opencv_aruco310d.lib
opencv_bgsegm310d.lib
opencv_bioinspired310d.lib
opencv_calib3d310d.lib
opencv_ccalib310d.lib
opencv_core310d.lib
opencv_cudaarithm310d.lib
opencv_cudabgsegm310d.lib
opencv_cudacodec310d.lib
opencv_cudafeatures2d310d.lib
opencv_cudafilters310d.lib
opencv_cudaimgproc310d.lib
opencv_cudastereo310d.lib
opencv_cudawarping310d.lib
opencv_cudev310d.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_structured_light310d.lib
opencv_surface_matching310d.lib
opencv_text310d.lib
opencv_tracking310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_xfeatures2d310d.lib
opencv_ximgproc310d.lib
opencv_xobjdetect310d.lib
opencv_xphoto310d.lib
opencv_aruco310.lib
opencv_bgsegm310.lib
opencv_bioinspired310.lib
opencv_calib3d310.lib
opencv_ccalib310.lib
opencv_core310.lib
opencv_cudaarithm310.lib
opencv_cudabgsegm310.lib
opencv_cudacodec310.lib
opencv_cudafeatures2d310.lib
opencv_cudafilters310.lib
opencv_cudaimgproc310.lib
opencv_cudastereo310.lib
opencv_cudawarping310.lib
opencv_cudev310.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_structured_light310.lib
opencv_surface_matching310.lib
opencv_text310.lib
opencv_tracking310.lib
opencv_ts310.lib
opencv_video310.lib
opencv_videoio310.lib
opencv_xfeatures2d310.lib
opencv_ximgproc310.lib
opencv_xobjdetect310.lib
opencv_xphoto310.lib
本来应该到这按理说就结束了,但或许有人和我一样,在项目中使用opencv库函数时会碰到缺少缺少opencv_xxx310d.dll文件的错误,此时网上的一种解决方法是找到(或下载)这些文件放到C:\Windows\system32\中。我采用另一种,在VS上右键项目,属性,调试,环境,添加系统环境变量(没错就是刚刚填过的path里加的,按理说应该不用加了啊- -);G:\OpenCV-3.1.0\opencv\build\install\x64\vc14\bin。这样就把这些dll文件路径告诉了VS了。
愉快地使用opencv 3.1.0+contribute
参考
《编译OpenCV+contribute模块》
https://blog.csdn.net/zkp_987/article/details/78455725?locationNum=3&fps=1《opencv3.1.0/3.2.0+contrib模块编译总结》
https://blog.csdn.net/kuweicai/article/details/78046257《cmake编译opencv3.1+contribute模块,并提供编译后的dll、lib等文件下载》
https://blog.csdn.net/hust_bochu_xuchao/article/details/52096055