今天为大家介绍如何用cmake使用vs2015的编译器,编译opencv4.1.0的源码加contrib模块。
第一步:下载材料
1.[opencv source code](https://github.com/opencv/opencv/releases)
2.cmake3.11.1
3.[和版本对应的opencv contrib](https://github.com/opencv/opencv_contrib/releases)
第二步:
如果下载了cmake的安装包,则勾选把cmake加入环境变量的选项,如果下载的cmake是压缩包的形式,则把下面的路径加入环境变量。
F:\cmake-3.11.1-win64-x64\bin # 按照自己的电脑情况修改
第三步:
打开cmake gui,在cmake的bin目录下,选择opencv_source和输出目录,输出目录最好自己新建一个空文件夹。
按generate选择编译器版本和win64或者是32,建议选择win64。
source code 选择源码目录,下面一行则是输出目录。点击configure,确保网速正常。
等待。。。。。此步骤可能会出现下载缓慢导致没下载成功。无碍,再次configure会再次下载,并且也可以自行下载将四个文件保存到对应的位置。下载链接在CSDN上也有。
接着会自动下载四个文件,如果网速不好会很慢
- 第一个是这个 ippicv_2019_win_xxxxxxxx.zip。
我就没下载成功,没下载成功之后还会自动下载一次。如果还没成功,下面有解决办法。
- 另外两个文件是opencv_ffmpeg.dll和opencv_ffmpeg_64.dll
- 还有一个文件是
face_landmark_model.dat这个文件默认下载到:
F:\opencv-4.1.0\.cache\data # 即源码的.cache/data文件夹
但是我们会发现这个文件名之前有一长串数字字母组合
我们从网上下载好face_landmark_model.dat,把名称改为上面的形式,替换这个文件就好了。
- 这两个文件保存到输出目录如下的位置。
- ippicv压缩包存放在源码的.cache文件夹的ippicv文件夹下,不用解压!!
- 然后到第四步
第四步:
- 取消勾选WITH_CUDA;
- 输入contrib模块地址,地址到moudle文件夹
- 同时勾选build opencv_world,这个一定勾选,配置环境很便利。
- 再次configure
第五步:
出现红色部分再次configure,这就不该有还用红色的了,这个时候点击generate
出现generating done之后,点击open project,Cmake的使命就结束了。!!!!
第六步:
如上图所示,我们有102个项目需要编译,(居然比我编译3.x还少)
先调整你自己想要编译的版本,现在的电脑基本都是64位了,笔者强烈建议就选release加x64模式。
之后找到解决方案中的ALL_BUILD下面的INSTALL,右键点击INSTALL,点击生成。等待就OK了。
无出意外,会很顺利。最终我们需要的代码会在下面的目录中:
F:\opencv_410_vs_2015\install
当然了,意外总是有的,你可能会遇到这个错误:
LINK : fatal error LNK1181: 无法打开输入文件“opencv_world410
这是因为这个文件是后面的项目生成的,但前面的项目就有对它的依赖。所以我们只要再次右击INSTALL,点击生成就行了。千万别点重新生成。
因为笔者第一次生成了24个,失败了70个。第二次就全部成功了。好像没有102个,难道是我记错了数值?但这不重要。
第七步 VS的配置
把我们需要的install目录下的这个目录,加入到环境变量中。
打开Visual studio 2015,新建一个空项目。按照下图找到属性管理器。
在属性管理器中展开项目。再展开Release | x64,这时候展开你们之前选择的编译方式,如果debug编译的就选上面两行中的一个。
在最下面的目录,在目录上右击 添加新项目属性表
之后再添加一下依赖项。因为我们之前再cmake之中勾选了bulid opencv world。这个时候我们仅仅需要添加这一项就行了。
最后我的属性管理器是这样的。OpencvSheet是我新建属性表用的名称,如果你其他项目也需要opencv,这时候你不需要重新配置,把这个表添加进去就行了
测试
接下来我们新建一个源文件,写一段测试代码。注意 文件"1.jpg"需要放在和源.cpp一样的目录下。
#include<opencv2\opencv.hpp>
using namespace cv;
int main()
{Mat picture = imread("1.jpg");imshow("测试程序", picture);waitKey(0);
}
按Ctrl + F7,编译, 按Ctrl+F5运行。可以发现,OK啦。