Windows10 + VS2017 + OpenCV3.2 编译 opencv_contrib 和优化

Windows10 + VS2017 + Cmake +OpenCV3.2 编译 opencv_contrib 和 优化

因为做实验要用到SIFT特征点,但是SIFT特征点已经被移到opencv_contrib里去了,所以就需要重新编译一遍opencv,之前安装opencv的方法是使用github上下载的.exe文件。

1. 下载和编译

前面下载opencv_contrib和使用Cmake编译可以参照 博客1
在Cmake Configure(可以直接Generate,也可以先Configure,再Generate,是一样的,直接Generate,等价于Configure + Generate)的过程中可能遇到无法下载opencv_ffmpeg.dll、opencv_ffmpeg_64.dll和ippicv_windows_20151201.zip的问题,这个可以参考 博客2 。通过手动下载以上三个文件后,将opencv_ffmpeg.dll拷贝到 {$你OpenCV安装的位置}\sources\3rdparty\ffmpeg\downloads\f081abd9d6ca7e425d340ce586f9c090 里替换掉里面的opencv_ffmpeg.dll,另外两个同理。

2. Install

在博客一中的四、编译生成install这步,先打开OpenCV.sln文件,然后在这里插入图片描述
在这里建议选择Release模式,因为我用Debug模式会出现迷之错误,详情请见 我的一篇博客:如果findChessboardCorners函数找到了2亿多个角点。。并且会在下面的测试中出现内存访问错误(debug模式经常出错)
然后按照博客一来,先选择重新生成解决方案,完成后选择仅生成INSTALL

3. 配置项目属性

打开VS2017新建一个项目,选择视图->属性管理器
在这里插入图片描述
右键Microsoft.Cpp.x64.usr选择属性
在这里插入图片描述为什么要配置这个表呢?这个表位于C:\Users{$你的用户名}\AppData\Local\Microsoft\MSBuild\v4.0,在每次创建新的工程时,会自动加载这个属性表,作为继承的值,这样每次创建新工程时,就不用每次都重新配置一遍属性表了。
在这里插入图片描述在博客1中配置项目文件第8步,因为之前我们重新生成项目的时候选择了Release版的,所以不能按照它的步骤,添加opencv_XXXXd.dll这种库文件,这些是debug版的库文件。而是应该添加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_hdf320.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
opencv_xphoto320.lib

把这些添加到连接器->输入->附加依赖项
接下来,如果你直接跑测试代码的话,会出现由于缺少opencv_XXXX.dll而无法运行的错误,这是因为在C:\Windows\System32里缺少对应的库文件,所以要将F:\opencv\build\install\bin(第二步Install操作后生成的Install文件夹下的bin文件夹)里的opencv_XXXX.dll移到C:\Windows\System32(因为我们第二步编译的时候选择的是x64版的,所以放到System32里,如果是x86版的放到C:\Windows\SysWOW64)
在这里插入图片描述放完如上图。
到这里跑测试代码就能跑通了,已经算是完成安装了。

4. 优化

这里做的优化主要是硬盘空间的优化和强迫症解决,先说强迫症解决吧,我有一个强迫症,就是功能一样的东西只留一个,在我安装完后,我写代码

#include <opencv2/core/core.hpp>

的时候代码补全会出现两个opencv2,一个是之前用.exe安装的opencv另一个是上面用Cmake编译安装的opencv,这让我很难受,解决方法就是,按照你之前配置opencv教程,反向操作就行了,把里面加的东西都删掉,如果找不到教程了,就注意一下属性表里箭头指的地方,把原来旧的路径删掉,把链接器里的opencv_world320.dll和opencv_world320d.dll删掉。
在这里插入图片描述然后是磁盘空间,刚刚装完opencv我发现磁盘空间一下子少了15G,主要是因为编译后那些文件加起来有15.5G,这无法忍受,我想装完后的那些文件应该只留Install文件夹里的就行了,因为在属性表配置的时候路径都是Install文件夹下的,于是我就把其他的都删了,这么错的坏处我不是很明确,应该有一点就是要删掉opencv3.2的时候只能手动删除,不能用openCV.sln的uninstall去完成了,不过我觉得问题不大。
在这里插入图片描述
上图为删完后的文件夹,占用硬盘4G,可以接受。

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值