前言
学习opencv,我们就得使用opencv的库,但是从官网下载的已经经过编译的库有时并不能满足我们的需求,所有我们有必要对opencv源码进行重新编译,并支持相关的功能:WITH_QT, CUDA等。
准备
opencv源码:4.1.0
Cmake软件:3.15.0
opencv_contrib源码:4.1.0
VS2015软件
过程
Windows
将opencv和opencv_contrib源码解压,然后打开Cmake的GUI程序:
注意:当你Cmake的GUI打开并不会和我出现的一样
打开Cmake的GUI后,在Where is the source code
一栏选择opencv的源码路径,在Where to build the binaries
一栏选择你要将编译的文件所放置的地方。如上图
路径选择完毕后,你可以点击Configure,就会出现和上图一样的各种编译选项。当然第一次所有的区域都是红色的,你可以再次点击Configure一般红色都会消失。
编译配置
推荐配置
NAME | VALUE | FOR |
---|---|---|
OPENCV_EXTRA_MODULES_PATH | 填入opencv_contrib源码路径 | 编译opencv_contrib |
WITH_CUDA | 勾选 | 支持GPU |
后缀带test(可以在搜索框搜) | 去除 | 节省编译时间 |
填完上述配置,就可以开始点击Configure,然后点击Generate.
编译
执行完上述操作,点击Open Project
按钮或者直接从构建目录找到opencv的解决方案运行。
用VS2015打开后
依次对ALL_BUILD和INSTALL进行生成
额…第一个ALL_BUILD会花费很长时间,耐心等待。
配置VS2015和系统环境变量
生成解决方案完毕后,可以新建一个项目
然后在视图菜单栏找到属性管理器,并点击。
然后依次对如下进行配置:
额,对于第三项,要添加的实在太多,这里给出一个自动生成这些库名的方法。
首先只添加一个opencv_core410d.lib
,然后运行下面的代码:
#include<opencv2\core.hpp>
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
int main() {
std::vector<std::string> res;
cv::glob("D:\\opencv\\build\\install\\x64\\vc14\\lib\\*.lib", res);
std::ofstream fs("D:\\opencv\\build\\install\\x64\\vc14\\lib.txt");
for (auto s : res) {
std::size_t lat = s.find_last_of('\\');
s = s.substr(lat + 1);
fs << s + "\n";
}
fs.close();
return 0;
}
运行上述代码就能自动生成所有库名,然后将结果复制粘贴到附加依赖项填进去。最终如上图。
到此所有都配置结束了!可以开始你的opencv之旅了!