龙空技术网

Win10+Cmake+VS2017 编译OpenCV4.5.2 源码(含contrib-master)

积极的阳光i 258

前言:

当前咱们对“如何使用vs2017”大体比较看重,咱们都需要知道一些“如何使用vs2017”的相关资讯。那么小编同时在网络上网罗了一些有关“如何使用vs2017””的相关知识,希望同学们能喜欢,大家快快来了解一下吧!

前面我们已经编译了OpenCV4.5.2的源码,但是扩展分支contrib-master还没有编译,涉及版权问题,这部分内容没有合入主版本,但是扩展模块功能丰富,我们学习和研究还是可以的。本文将详细介绍OpenCV4.5.2(最新版)源码和扩展分支的编译 ,供大家参考。

目标:

1)编译OpenCV4.5.2 opencv-master

2) 将opencv_contrib-master(4.5.2) 编译合入 master

3) 编译生成opencv_world452.lib/opencv_world452.dll,较官方提供的安装版本,用法都一样,但我们这个文件支持扩展模块的相关功能

内容概要:

1.下载源码

下载地址是 当前OpenCV 最新版本是4.5.2,我们就编译最新版本

OpenCV官网

下载的结果解压后放在一起,如下图

2.编译工具2.1 CMake

在 Windows 平台下生成 OpenCV 的解决方案,需要一个名为 CMake 的开源软件。CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再以一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

下载Cmake

在官网: 上下载,进入下载页面,选择对应版本,在安装的时候记得勾选添加桌面图标和自动添加PATH路径。

Cmake 官网下载页面

如下位置 下载最新版本,

安装CMake

双击下载的安装包文件,注意添加环境变量和创建桌面图标,其他的默认下一步即可。

安装Cmake

2.2 Visual Studio 2017

这个开发工具不介绍,直接在网上下载安装即可,推荐Visual Studio 2017。

3.使用 CMake 生成OpenCV.sln

要点:

Cmake将原始代码make成为你选择的编译器能够编译的形式,使用的方式都是CMake两次Configure->一次Generate->Open Project打开vs进行编译。参数的不同带来了结果的不同。

Config的目的主要是让你对CMAKE里面的相关内容进行选择的,第一次Config是把所有需要配置的项目显示出来,然后你进行修改(就是打钩子和去掉钩子),第二次config是为了配置你修改后的内容。

3.1 打开Cmake

安装完成后点击桌面图标打开Cmake工具,

3.2指定 opencv-master 路径

注意:当前opencv-master 源码目录 为资源存放目录 含CMakeLists.txt

3.3 指定解决方案的存放路径

where to build the binaries 指的是我们编译的工程OpenCV.sln存放位置,如 (D:\CV\opencv452\opencv452build)

3.4第一次 Configure

路径都设置好后,点击 Confugure 按键,进行第一次配置过程。

然后弹出编译器选择的对话框,根据自己的安装的编译器进行选择,我们选择 VS2017,平台选择x64。64位和32位的选择体现在选择编译器的时候是否选择Win64,推荐x64。

选择完后点击 finish, 开始 CMake 的第一次源码配置过程,

等待,源码配置完成的标志是 出现 Config done。

3.5 第二次 Configure

第一次配置之后还需第二次配置,第二次config是为了配置你修改后的内容,再次点击 Configure。理论上是可以多次修改的,根据实际情况 需要config哪些功能就勾选,上图中所有红色的内容都是可以修改的。

执行第二次Configgure 之前,修改如下配置

1)勾选 Build_opencv_world

2)勾选OPENCV_ENABLE_NONFREE

3)OPENCV_EXTRA_MODULES_PATH 路径设置 用/ 不要用 \

如正确的写法是:D:/CV/opencv452/opencv_contrib-master/modules

错误的写法是:D:\CV\opencv452\opencv_contrib-master\modules

修改完成后,再次点击Configure,等待结束。

3.6生成 OpenCV.sln

Generate 按钮,成功生成项目,

出现Generating done 表示成功结束

4.编译OpenCV源码

打开编译项目生成目录(D:\CV\opencv452\opencv452build)

4.1 编译源码

打开OpenCV.sln,显示有117个项目,

4.2 生成库文件

在install 目录可以看到生成的库文件信息,这部分跟安装版本一致。

5.验证扩展分支编译结果

创建一个Console 工程,命名为 testBuildOpenCV,并设置好资源引用路径,

添加链接库,

参考如下测试工程的代码,

#include <iostream>#include<ctype.h>#include <opencv2/opencv.hpp>#include <opencv2/xfeatures2d.hpp>using namespace cv;using namespace std;int main(){	Mat image = imread("lena.jpg");		imshow("原图像", image);	waitKey(0);	////////////////////////////灰度图转换	Mat imagegray;	cvtColor(image, imagegray, COLOR_RGB2GRAY);		//////////////////////////////////////////////////////提取特征点		vector<KeyPoint> keypoints_obj;	Mat draw;	Ptr<SiftFeatureDetector> siftFD = SiftFeatureDetector::create();	siftFD->detectAndCompute(imagegray, Mat(), keypoints_obj, draw);	drawKeypoints(imagegray, keypoints_obj, imagegray, Scalar(0, 0, 255), DrawMatchesFlags::DEFAULT);			imshow("output", imagegray);	waitKey(0);		system("pause");}

测试原图,

测试结果图,

在lena 图像上找到了特征点,说明扩展模块已经编译并合入了opencv_world452d.lib 和 opencv_world452d.dll 库文件中了,可以直接使用。

总结:

本文详细介绍了OpenCV 当前最新版本(4.5.2)的源码及扩展分支的编译相关的内容,包括

1)源码下载

2)编译工具Cmake和VS2017,其中详细介绍了Cmake的下载和安装

3)使用Cmake 生成含扩展分支的OpenCV.sln,2次congig,1次generate,以及相关的路径设置,关键选项勾选等

4)OpenCV.sln 的编译 以及需要使用的库文件生成等操作

5)最后通过创建了一个实例,验证了我们的OpenCV 编译结果,测试扩展模块中的 SURF 查找特征点功能,在lena图像上测试OK,说明编译结果是符合预期的。

如果本文对你有所帮助,还请帮忙点赞转发关注加收藏,感谢支持!

标签: #如何使用vs2017 #cmakelists opencv