VS2017+OpenCV3.2+Contrib3.2
2021-7-20 更新
本博客写于四年前,由于VS CMake OpenCV 同版本有多次更新,以及环境差异等,部分配置可能失效,导致编译失败。但是仍然有很多同行在配置时参考本博客,致使出现了一些问题。由于年代久远,联系我 也无法提供编译好的包。
在此推荐大家使用 VS2019 社区版(ps: 2022 马上就要出来了 -_-) opencv4.4.0+contrib4.4.0的包。
我提供一个 VS2019 编译的opencv4.4+contrib4.4 (Release+x64)的包,直接配置就可以使用了 百度云盘链接
链接:https://pan.baidu.com/s/14TGbPwirVxhOKxw1c6tbvA 提取码:open
前言
-
前一阵子vs2017发布了,想要尝尝鲜,顺便也想把OpenCV升到3.2,反正都干了,不如就来个大换血吧。。于是就一番折折腾把opecv3.2+opencv_contrib3.2模块都编译配置了
-
在配置contrib之前,尝试直接配置OpeCV3.2-vc14,发现可以正常使用,也就是说官方包虽然只有vc14,但vs2017(vc15)也支持的很好。
-
操作环境:WIN10 64bit ,VS2017社区版,CMake-3.8.0-rc3
准备文件:opencv3.2.zip,opencv_contrib-3.2.0.zip
【ippicv_windows_20151201.zip protobuf-cpp-3.1.0.tar.gz】
上述两个用于编译的文件常常由于下载缓慢或者无法下载导致编译失败。大家可以直接在CSDN上搜索到,如果有需要,后期我会上传补充。
goturn是我需要的一个训练模型【无视】
doc是官方离线文档【可选】
extra是跑例程需要的dataset【可选】
其他几个就是上文提到的 -
需要注意的是:Cmake最好到官网下载较新的版本,否则无法检测到VS2017.这里使用CMake3.8版本,其次contrib模块也要相对应3.2版本,否则很难编译通过,接下来我们就可以开始了
-
本文中的路径都是相对于我的,你的路径根据实际会有所不同
编译OpenCV3.2
- 解压OpenCV3.2。在解压后的OpenCV3.2的目录里新建文件夹并命名为myBuild(主要是和原Build文件夹区分)
- 解压opencv_contrib-3.2.0(建议移动到OpenCV3.2目录下,方便后期查找和操作)
- 解压并打开Cmake。如果是免安装程序,就到cmake的解压目录的
bin里双击cmake-gui.exe 如下图
4.在cmake的地址栏填入地址
where is the source code 填你的OpenCV3.2的source目录
where to build the biliaries 填刚建立的myBuild
如图是我的路径。你要看你的具体目录来填写
然后点击【Configure】会弹出选择VS的界面,我选的是vs2017 win64
再次点击【Configure】
该过程是需要联网的,甚至需要帆樯。否则可能出现ERROR:not find 等,一般就是上述提到的两个文件。
将ippicv_windows_20151201.zip放到myBuild/3rdparty/ippicv里,再次【Configure】
编译contrib模块
configure done后,找到OPENCV_EXTRA_MODULES_PATH
将其设置为opencv_contrib/modules的路径
如图我的路径。然后【configure】
由于CMakeLists.txt中下载dnn模块的链接失效,所以需要自己另行下载并移到opencv_contrib-3.2.0/modules/dnn/.download/bd…/v3.1.0
如图路径
然后【Configure】完成后就可以【Generate】了
然后再点击【Open Project】这会自动打开vs2017
也可以到myBuild里找到OpenCV.sln打开。
打开vs2017后一般可以直接看到【解决方案资源管理器】一栏,没有就点击【视图v】-【解决方案资源管理器p】,可以看到OpenCV的解决方案
选择你需要的平台
右键解决方案重新生成
待结束后,点开CmakeTargets–>INSTALL,右键->【仅用于项目】->【仅生成INSTALL】
等待完成。我这里是成功113,跳过7个。
myBuild最后大概有6.5G【有很多垃圾文件】
生成后把opencv和contrib综合了起来。所以配置的时候只需要用myBuild/install了。
这是myBuild里的文件
由于垃圾文件很多myBuild里可以只留下install,其他都可以删掉
同时建议把opencv,contrib里面的源码留下。我整理如下
分别对应myBuild,opencv源码+sample,contrib源码+samples
整个OpenCV3.2缩小到600+Mb
方便以后查看
接下来就和配置普通版本一样了。
配置环境变量
- 右键电脑【属性】
- 【高级系统设置】
- 【环境变量】
- 【系统变量】【Path】
- 在变量值后加
;D:\Win10soft\OpenCV3.2\myBuild\install\x64\vc15\bin
注意这要改成你的路径,多个变量值以英文分号分开
配置库目录和包含目录
- 先新建一个工程
【文件】->【新建】->【项目】
确定,在下一步选择空项目。
将上方切换至Release x64。
打开属性管理器,如果主界面没有,就点击【视图】->【属性管理器】
因为我们刚刚生成的是Release x64,所以这里我们点开Release|x64
右键再点属性开始配置
1.【通用属性】->【VC++目录】->【包含目录】
添加
D:\Win10soft\OpenCV3.2\myBuild\install\include
D:\Win10soft\OpenCV3.2\myBuild\install\include\opencv
D:\Win10soft\OpenCV3.2\myBuild\install\include\opencv2
【确定】
2.【库目录】
D:\Win10soft\OpenCV3.2\myBuild\install\x64\vc15\lib
【确定】
点击【应用】
3.【通用属性】->【链接器】->【输入】->【附加依赖项】
添加如下库(41个)
opencv_aruco320.lib
opencv_bgsegm320.lib
opencv_bioinspired320.lib
opencv_calib3d320.lib
opencv_ccalib320.lib
opencv_core320.lib
opencv_datasets320.lib
opencv_dnn320.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
确定确定应用。
此时你已配置好了Release|x64的OpenCV+contrib3.2
重启一下,试试读取图片吧
测试结果(右键可查看大图)
在移动工程时偶然发现,该工程居然有101Mb,而这只是读取一张图片而已。查看文件夹,合计也才几mb文件,然后打开了文件管理器的查看,显示隐藏。
发现一个隐藏文件夹
查看属性果然很大,我将隐藏文件夹内的内容删除,并打开属性显示。然后打开工程。发现在加载工程过程中,该隐藏文件夹,不断增长。然后跑了surf匹配,结果工程变成了180多Mb.
有些难以置信。以前在VS2013上8个cpp,代码近万行的工程才80多mb。目前没有找到原因,猜测可能是因为:VS2017为加快处理速度的新特性,或者是我在安装VS时,选择安装项不合理导致。有知道的可以在下面留言。。告诉我哈
如有失误,欢迎指正