前言
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
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的路径
特别注意生成静态库是一定要去除
下面三个模块:
BUILD_EXAMPLES
BUILD_TEST
BUILD_PERF_TESTS
否则编译之后大小会很大50G左右
如图我的路径。然后【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
方便以后查看
接下来就和配置普通版本一样了。
配置环境变量
配置库目录和包含目录
1. 先新建一个工程
【文件】->【新建】->【项目】
确定,在下一步选择空项目。
将上方切换至Debug/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个 Debug)
添加如下库(41个 Debug)
opencv_aruco320d.lib
opencv_bgsegm320d.lib
opencv_bioinspired320d.lib
opencv_calib3d320d.lib
opencv_ccalib320d.lib
opencv_core320d.lib
opencv_datasets320d.lib
opencv_dnn320d.lib
opencv_dpm320d.lib
opencv_face320d.lib
opencv_features2d320d.lib
opencv_flann320d.lib
opencv_fuzzy320d.lib
opencv_highgui320d.lib
opencv_imgcodecs320d.lib
opencv_imgproc320d.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
添加如下库 (41个Release)
添加如下库(41个Release)
添加如下库(41个Release)
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
重启一下,试试读取图片吧
测试代码
#include
#include
int main(int argc,char** argv){
cout<< cv_version< Mat src=imread("you own path of pictures"); imshoe("hello world!",src); waitKey(0); return 0; } 在移动工程时偶然发现,该工程居然有101Mb,而这只是读取一张图片而已。查看文件夹,合计也才几mb文件,然后打开了文件管理器的查看,显示隐藏。 针对上面只生成三个文件,且没有x64的,默认为生成的bin文件为64位,最新的vs2017生成库更简洁,并不影响使用。其余情况也可以按照这个处理。
发现一个隐藏文件夹
查看属性果然很大,我将隐藏文件夹内的内容删除,并打开属性显示。然后打开工程。发现在加载工程过程中,该隐藏文件夹,不断增长。然后跑了surf匹配,结果工程变成了180多Mb.
有些难以置信。以前在VS2013上8个cpp,代码近万行的工程才80多mb。目前没有找到原因,猜测可能是因为:VS2017为加快处理速度的新特性,或者是我在安装VS时,选择安装项不合理导致。