OpenCV3.4.5+VS2017+扩展模块编译
一.准备工作
1.下载OpenCV源码
OpenCV源码和扩展模块(opencv_contrib)版本要对应:
1). OpenCV源码下载地址:
OpenCV下载地址:
https://github.com/opencv/opencv/releases
2). OpenCV扩展模块(opencv_contrib)下载地址:
https://github.com/opencv/opencv_contrib/releases
2.下载安装Cmake
二. 编译
-
分别解压opencv-3.4.5.zip和opencv_contrib-3.4.5.zip到同一个目录下的两个单独文件夹内
-
在该目录下新文件夹build:
我的目录结构:
-
打开CMAKE_GUI, Browser Source选择 "...\opencv-3.4.5\opencv-3.4.5"
Browser Build选择刚才新建的build目录 "...\opencv3.4.5\build"
-
点击Configure选择, Visual Studio 15 2017 Win64
-
点击Finish 开始配置
-
FFmpeg下载失败 可以到这里:https://pan.baidu.com/s/1rF3KE3cripWm_mzSOT763A 提取码:usy5 下载, 下载完成之后放到 3rdparty 目录下
-
如提示自己电脑上安装了python3, 可能会出现python版本错误,则把 "OPENCV_PYTHON3_VERSION"勾选上!
-
配置"OPENCV_EXTRA_MODULES_PATH" 目录为opencv_contrib下的modules目录"...\opencv_contrib-3.4.5\modules"
-
如果要用编译opencv_contrib中的non-free算法模块:
-
为了保险起见,进入:opencv目录下,打开cmakelist.txt找到
- OCV_OPTION(OPENCV_ENABLE_NONFREE "Enable non-free algorithms" OFF),把OFF修改为ON
-
-
再次点击"Configure"
成功之后点击"Generate"
生成完成之后点击"Open Project"
-
在VS中分别用Debuge和Release模式编译一遍
![](https://img2018.cnblogs.com/blog/1508951/201901/1508951-20190123130156379-2013206263.png)
![](https://img2018.cnblogs.com/blog/1508951/201901/1508951-20190123130054317-350151991.png)
- 编译完成后, 右键 install->仅仅生产install
- 编译完成得到install文件夹, 除了该文件夹其他的都可以删除了
三.配置
-
右键我的电脑-->高级系统设置-->高级-->环境变量-->找到path-->新建-->填入build目录下:"...\install\x64\vc15\bin"
-
之后记得重启资源管理器
-
如果要在vs项目中使用则, 在项目管理器中Debuge|x64下新建属性表:
-
VC++目录-->包含目录, 设置为刚才install目录下的include目录 "../build/install/include"
-
库目录设置为, X64目录下的lib目录 ".../build/install/x64/vc15/lib"
-
打开命令行,进入".../build/install/x64/vc15/lib"目录下. 按照图中所示输入命令,得到.lib文件名, dubuge版本的lib文件以d.lib结尾, release版本,没有d.(可根据自己配置的版本自行导出.lib文件 )
-
链接器输入,附加依赖项填入刚才得到的lib文件名
-
至此配置完成,下边进行测试
四.测试
- 在vs中键入如下代码:
//代码转自知乎: https://zhuanlan.zhihu.com/p/40323837
#include "pch.h"
#include <opencv2/opencv.hpp> //包含头文件
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = imread("E:/OpenCV/testimage/test.png"); //载入图像
if (src.empty()) { //是不是为空
printf("could not load image...\n");
return -1;
}
namedWindow("test opencv setup", CV_WINDOW_AUTOSIZE); //创建窗口,自动大小
imshow("test opencv setup", src); //显示图像,窗口标题
waitKey(0); //x=0无限等待下去,直到有按键按下,等待用户按键退出程序
return 0;
}