【转】OpenCV安装流程及从源码编译方法 + 配置VS

本篇文章记录了安装OpenCV 3.4.2及配置VS2017的方法,以及利用CMake从源码编译适用于老版本VS2013的OpenCV 3.4.2的编译及配置流程(可选Contrib模块)。本文也可以作为其他OpenCV及VS版本安装配置方法的参考。

注:OpenCV的Contrib模块必须手动编译,请直接查看本文第3节“3 从源码编译并配置OpenCV”。

1 安装OpenCV 3.4.2

从OpenCV官网下载安装包:https://opencv.org/releases.html

双击安装:即解压文件到指定文件夹

注:安装程序会自动创建“opencv”文件夹


“sources”文件夹里面是源代码以及示例程序“samples”、文档“doc”等

“build”文件夹包含编译好的库文件,可以直接配置使用
 

在“build”文件夹内,“include”里面是头文件,“x64”文件夹里面是64位编译器生成的动态链接库文件(包括vc14,vc15版本)

注:vc10对应VS2010,vc11对应VS2012,vc12对应VS2013,vc14对应VS2015,vc15对应VS2017。

注:如果需要使用静态链接库或者在其他版本的VS中使用,则需要手动编译。

2 配置OpenCV 3.4.2 + VS2017

2.0 配置环境变量(重启电脑生效)

在系统桌面的“此电脑”图标上右击,依次选择“属性 - 高级系统设置 - 环境变量”

在下方的系统变量中找到Path变量,双击打开,添加OpenCV动态链接库的路径:

[OpenCV安装路径]\opencv\build\x64\vc15\bin

注:按照自己OpenCV实际的安装路径值替换上面的“[OpenCV安装路径]”字符串。

注:对于动态编译生成的可执行文件,其运行时需要依靠该环境变量找到“.dll”动态链接库文件所在地址进行函数和数据的动态调用。

注:可以设置仅用于该项目调试的环境变量。方法是在项目属性的调试项的环境子项编辑:

PATH=[DLL文件路径1];[DLL文件路径2]

然后需要对VS2017开发环境进行设置,使VS能找到调用OpenCV所需要的头文件和库文件。

2.1 永久生效的配置方法

这种配置方法对VS创建的所有项目都有效,并且所修改的配置文件会被不同版本的VS共用。

1. 用VS2017任意打开或创建一个C++项目,依次点击“视图”-“属性管理器(M)”

注:对于VS2013,依次点击“视图”-“其他窗口”-“属性管理器”

2. 在打开的属性管理器窗口中,展开“Debug|x64”节点,双击“Micorsoft.Cpp. x64.user”,打开全局属性的设置窗口:

2.1. 在左边选择“VC++目录”

在右边“包含目录”中添加OpenCV的头文件目录:

[OpenCV安装路径]\opencv\build\include

在右边“库目录”中添加OpenCV的链接库目录:

[OpenCV安装路径]\opencv\build\x64\vc15\lib 

2.2. 在左边选择“链接器 - 输入”

在右边“附加依赖项”中添加OpenCV的库文件名:

opencv_world342.lib
opencv_world342d.lib

注:含后缀“d”代表Debug版本。
注:属性管理器窗口中的“Release|x64”节点的“Micorsoft.Cpp. x64.user”项同Debug节点项,不需要再次配置。

添加完成后,右击“Micorsoft.Cpp. x64.user”,选择“保存”即可。

2.2 单次生效的配置方法

这种配置方法只对当前所配置的项目有效。

依次点击“项目 - 属性”(或者在项目名称上右击,选择“属性”)

在打开的项目属性页进行“包含目录,库目录,附加依赖项”的配置,配置方法同前文2.1 永久生效的配置方法所述。

2.3 生成配置文件的配置方法(推荐)

这种配置方法创建配置文件并保存,每次只在需要OpenCV的项目中添加配置文件即可。

1. 在VS2017中任意打开或创建一个C++项目,依次选择“视图”-“属性管理器(M)”

2. 在属性管理器的“Debug|x64”项右击,选择“添加新项目属性表”

自行设定名称和路径(方便之后的OpenCV项目寻找使用),并点击”添加“(如:OpenCV3.4.2_VS2017_x64.props)

3. 双击“Debug|x64 - OpenCV3.4.2_VS2017_x64.props”

在打开的属性页进行“包含目录,库目录,附加依赖项”的配置,配置过程同前文2.1 永久生效的配置方法所述

配置完成后,右击“OpenCV3.4.2_VS2017_x64.props”,选择“保存”即可

然后,按下一条“4.”所述为该项目的“Release|x64”项添加刚才创建的配置文件,使该项目在Debug和Release模式下均可使用OpenCV库。

4. 之后创建OpenCV项目时,直接在“属性管理器”窗口的“Debug|x64”(以及“Release|x64”)项右击,选择“添加现有属性表”,找到之前保存的配置文件“OpenCV3.4.2_VS2017_x64.props”,并“打开”即可。

3 从源码编译并配置OpenCV

本节以编译并配置适用于VS2013的OpenCV 3.4.2为例。

注1:若需要联合编译Contrib模块,请首先下载对应OpenCV版本的Contrib模块源文件并解压:

https://github.com/opencv/opencv_contrib/releases

【转】OpenCV安装流程及从源码编译方法 + 配置VS_第1张图片

注2:编译Debug版本的OpenCV的Python接口时,需要“python[版本号]_d.lib”库文件。因此,在安装Python时应选择自定义安装选项并勾选安装其Debug组件(若之前没有安装,可以直接打开同版本的Python安装包,选择“Modify”进行附加安装)

1. 使用CMake从源码构建VS工程

首先安装CMake:https://cmake.org/download

1.1. 打开“cmake-gui.exe”程序

Where is the source code:填写OpenCV安装(解压)后的“sources”文件夹地址(包含CMakeLists.txt文件)

新建一个文件夹(如“[OpenCV安装路径]\opencv\opencv3.4.2_vs2013_x64”),用于存放CMake使用OpenCV源码构建的VS工程,将其路径填入Where to build the binaries

 
 

1.2. 点击配置“Configure”

选择Visual Studio 12 2013 Win64(如果选择Visual Studio 12 2013选项,则会构建Win32项目),然后点击“Finish”,CMake自动开始检测计算机环境、下载依赖项。

等待配置完成后(此过程受网络状况影响,可能时间较长),窗口的框内整个显示红色,此时可以对编译参数进行个性化配置:

注1:若要将以上所有库文件打包,生成单一的“world”库(使用方便,但文件较大),请勾选“BUILD_opencv_world”选项。

注2:若要联合Contrib模块编译,请在OPENCV_EXTRA_MODULES_PATH参数处粘贴本节开始时下载的Contrib源文件的modules文件夹路径。

或直接略过配置过程即可。

再次点击“Configure”,等待进度条完成且红色消失即表示配置成功。

1.3. 点击“Generate”

开始生成解决方案,下方的信息栏输出“Generating done”表示创建成功。

点击“Open Project”选择VS2013打开(或使用VS2013打开解决方案中的“.sln”文件),即可进入VS界面。

2. 在VS2013中编译生成库文件

2.1. 在Solution Explorer(解决方案资源管理器)中,右键“CMakeTargets/ALL_BUILD”,选择生成(Build)

完成之后,将在以下目录看到生成的动态链接库文件:

[OpenCV安装路径]\opencv\opencv3.4.2_vs2013_x64\bin\Debug
[OpenCV安装路径]\opencv\opencv3.4.2_vs2013_x64\lib\Debug

2.2. 右键“CMakeTargets/INSTALL”,选择生成(Build)

这是为了将所有的头文件和库文件集中到一起,便于管理和使用。

完成之后,将在以下目录看到库文件:

[OpenCV安装路径]\opencv\opencv3.4.2_vs2013_x64\install\x64\vc12\bin
[OpenCV安装路径]\opencv\opencv3.4.2_vs2013_x64\install\x64\vc12\lib

2.3. 将Debug模式修改为Release模式,重新执行上面两步2.1.和2.2.

3. 配置OpenCV与VS

3.1. 添加系统环境变量

按照前述2.0 配置环境变量添加以下环境变量:

[OpenCV安装路径]\opencv\opencv3.4.2_vs2013_x64\install\x64\vc12\bin

3.2. 属性配置

按照前述2.12.22.3配置以下内容:

包含目录:

[OpenCV安装路径]\opencv\opencv3.4.2_vs2013_x64\install\include

库目录:

[OpenCV安装路径]\opencv\opencv3.4.2_vs2013_x64\install\x64\vc12\lib

附加依赖项:

opencv_calib3d342.lib
opencv_calib3d342d.lib
opencv_core342.lib
opencv_core342d.lib
opencv_dnn342.lib
opencv_dnn342d.lib
opencv_features2d342.lib
opencv_features2d342d.lib
opencv_flann342.lib
opencv_flann342d.lib
opencv_highgui342.lib
opencv_highgui342d.lib
opencv_imgcodecs342.lib
opencv_imgcodecs342d.lib
opencv_imgproc342.lib
opencv_imgproc342d.lib
opencv_ml342.lib
opencv_ml342d.lib
opencv_objdetect342.lib
opencv_objdetect342d.lib
opencv_photo342.lib
opencv_photo342d.lib
opencv_shape342.lib
opencv_shape342d.lib
opencv_stitching342.lib
opencv_stitching342d.lib
opencv_superres342.lib
opencv_superres342d.lib
opencv_video342.lib
opencv_video342d.lib
opencv_videoio342.lib
opencv_videoio342d.lib
opencv_videostab342.lib
opencv_videostab342d.lib

注:请按照本机实际的安装路径进行配置。

注:以上的“附加依赖项”只针对“OpenCV 3.4.2”,其他版本的库名需要根据实际名称进行修改。

4 安装配置的测试

注:本篇文章前述安装及配置的都是“x64”版本的动态链接库。因此,调用OpenCV的VS2017工程应该设置为使用“x64”编译器进行编译:

VS2013创建的“Win32控制台应用程序”转为“x64”编译器的方法:

下拉编译器设置,选择“配置管理器”

在“活动解决方案平台”项下拉,选择“新建”,在“键入或选择新平台”处下拉,选择“x64”,点击确定。

1. 在已经配置OpenCV的VS项目中添加源文件,编码如下内容:

#include //C++输入输出库头文件
#include //OpenCV核心库头文件
#include //OpenCV图形处理头文件
 
using namespace std;
 
int main()
{
	//窗口名称
	string windowName = "HelloWorld";
	//图像名称
	string imgName = "CR7.jpg";
 
	//读入图像
	cv::Mat image = cv::imread(imgName, CV_LOAD_IMAGE_COLOR);
	//如果无法读取图像
	if (!image.data)
	{
		cout << "无法打开图像文件!" << endl;
		system("PAUSE");//暂停窗口
		return -1;
	}
 
	//创建一个新窗口
	cv::namedWindow(windowName, CV_WINDOW_AUTOSIZE);
	//将图像显示都新创建的窗口中
	cv::imshow(windowName, image);
	//等待,直到用户按任意键时退出
	cv::waitKey(0);
 
	return 0;
}

注:请将图片放入项目源文件所在文件夹,或者在程序中使用绝对路径。

2. 编译项目并运行,正确显示图像窗口:

你可能感兴趣的:(OpenCV,opencv,visual,studio)