win10 VS2015+OpenCV4.1.2一劳永逸的永久性配置方式及不同OpenCV版本之间的无缝切换

win10 VS2015+OpenCV4.1.2 完整详细一劳永逸的永久性配置方式

OpenCV官网:Releases - OpenCV,下载OpenCV后直接解压就可以了。

一、环境变量配置

1、用户变量设置

添加用户变量:OpenCV_PATHhj(自己定名字,我的是OpenCV_PATHhj)

用户变量值:

D:\Program Files\OpenCV\opencv4.1.2\opencv\build

D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc15\bin

(用哪个版本的OpenCV就配置哪个版本,也可以配置多个,版本间无缝切换)

添加用户变量应用到PATH下;%OpenCV_PATHhj%

也可以直接在PATH后添加下面的变量值:

D:\Program Files\OpenCV\opencv4.1.2\opencv\build

D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc15\bin

注:vc10表示VS是2010,vc11对应VS2012,vc12对应VS2013,vc14对应VS2015 ,vc15对应VS2017

2、系统变量设置【不配置用户变量,只配置系统变量好像也是可以的】

添加系统变量:

(1)可以直接在PATH后添加下面的变量值,以英文 ; 隔开:

D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc15\bin

(2)如果要添加的变量值较多,也可以添加变量-值对,再将变量名添加到系统变量的Path中。(我采用的是第二种)

新建系统变量,输入变量名:OpenCV_PATHhj(自己定名字,我的是OpenCV_PATHhj)

输入变量值:D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc15\bin

在系统变量Path后添加:%OpenCV_PATHhj%

做完上面的配置后,OpenCV的环境变量就配置完。(有说要重启才生效,但我没重启,发现也是可以的)

二、配置属性表

系统的默认属性表一般是位于:C:\Users\用户名\AppData\Local\Microsoft\MSBuild\v4.0

我的是位于:C:\Users\lenovo\AppData\Local\Microsoft\MSBuild\v4.0

属性表名称:Microsoft.Cpp.Win32.user.props(x86属性表)

Microsoft.Cpp.x64.user.props(x64属性表)

更改属性表之前建议先备份一份(以防万一改错了)。

以记事本方式打开属性表文件,将以下内容添加到:Microsoft.Cpp.x64.user.props中

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludePath>D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include\opencv2;D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include;$(IncludePath)</IncludePath>
    <LibraryPath>D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc14\lib;D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc15\lib;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <Link>
      <AdditionalDependencies>opencv_world412.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
</Project>

三、验证是否配置成功

1、新建win32控制台工程

下一步-->下一步-->完成

在项目名称上右键-->属性-->配置属性-->VC++目录

包含目录中有以下内容:

D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include\opencv2

D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include

库目录中有以下内容:

D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc15\lib

在项目名称上右键-->属性-->配置属性-->链接器-->输入

附加依赖项:opencv_world412.lib

如果有这些内容,表示属性表配置成功。

2、验证所有的配置是否配置成功

在项目工程的主函数中添加以下代码:

// test_opencv.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
using namespace cv;

#include <iostream>
using namespace std;

int main()
{
	Mat src;

	src = imread("D:\\E_data\\MyTest\\_MyWork\\test_opencv\\dog.bmp");
	namedWindow("source", 0);
	imshow("source", src);
	waitKey(0);


    return 0;
}

生成解决方案,运行程序后出现以下图像,表示OpenCV所有的配置都是配置成功的,并且下次再建工程时,是不需要再重新配置环境的,默认是OpenCV4.1.2的环境。

运行模式:Release  x64

现在介绍另外一种配置方式可以实现OpenCV不同版本之间的无缝切换:

一、环境变量配置

基本与上面一样,要实现多少个版本的OpenCV之间切换,就要添加多少个相应的环境变量到Path中。

二、配置属性表

步骤二不太一样

系统的默认属性表不要去篡改,直接将以下两个属性表复制一份,拷贝出来放到其他的盘。

Microsoft.Cpp.Win32.user.props

Microsoft.Cpp.x64.user.props

为了便于区分可以更改属性表的文件名称:(我的如下)

分别编辑属性表的内容

以下是OpenCV4.1.2两种运行模式下的属性表:

运行模式:Debug x64,在OpenCV4.1.2_x64Debug.props中添加以下内容:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludePath>D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include\opencv2;D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include;$(IncludePath)</IncludePath>
    <LibraryPath>D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc14\lib;D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc15\lib;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <Link>
      <AdditionalDependencies>opencv_world412d.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
</Project>

运行模式:Release x64,在OpenCV4.1.2_x64Release.props中添加以下内容:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludePath>D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include\opencv2;D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include;$(IncludePath)</IncludePath>
    <LibraryPath>D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc14\lib;D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc15\lib;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <Link>
      <AdditionalDependencies>opencv_world412.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
</Project>

需要使用多少个版本的OpenCV,就相应的需要像这样的配置多少个版本的属性表。

以下是OpenCV3.4.0两种运行模式下的属性表:

运行模式:Debug x64,在opencv3.4.0_x64Debug.props中添加以下内容:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <IncludePath>D:\Program Files\OpenCV\opencv3.4.0\opencv\build\include;D:\Program Files\OpenCV\opencv3.4.0\opencv\build\include\opencv;D:\Program Files\OpenCV\opencv3.4.0\opencv\build\include\opencv2;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include;$(IncludePath)</IncludePath>
    <LibraryPath>D:\Program Files\OpenCV\opencv3.4.0\opencv\build\x64\vc14\lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\lib\x64;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <Link>
      <AdditionalDependencies>opencv_world340d.lib;cublas.lib;cuda.lib;cudadevrt.lib;cudart.lib;cudart_static.lib;nvcuvid.lib;OpenCL.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>

运行模式:Release x64,在OpenCV3.4.0_x64Release.props中添加以下内容:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <IncludePath>D:\Program Files\OpenCV\opencv3.4.0\opencv\build\include;D:\Program Files\OpenCV\opencv3.4.0\opencv\build\include\opencv;D:\Program Files\OpenCV\opencv3.4.0\opencv\build\include\opencv2;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include;$(IncludePath)</IncludePath>
    <LibraryPath>D:\Program Files\OpenCV\opencv3.4.0\opencv\build\x64\vc14\lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\lib\x64;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <Link>
      <AdditionalDependencies>opencv_world340.lib;cublas.lib;cuda.lib;cudadevrt.lib;cudart.lib;cudart_static.lib;nvcuvid.lib;OpenCL.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>

三、验证是否配置成功

1、新建win32控制台工程(与上面一样)

这个时候再去看以下目录,发现里面是没有与OpenCV相关的内容的。

在项目名称上右键-->属性-->配置属性-->VC++目录

包含目录中有以下内容:

D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include\opencv2

D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include

库目录中有以下内容:

D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc15\lib

在项目名称上右键-->属性-->配置属性-->链接器-->输入

附加依赖项opencv_world412.lib

2、添加属性表

从属性管理器中添加属性表,使用哪个编译模式就添加那个属性表,如下图:

(右键-->添加现有属性表)

要使用哪个版本的OpenCV就添加哪个版本的属性表,由此来实现OpenCV不同版本之间的切换。

再去查看包含目录、库目录、附加依赖项里面就有与OpenCV相关联的内容。

2、验证所有的配置是否配置成功

在项目工程的主函数中添加代码(与上面一样)

选择相应的运行模式,直接运行工程,成功显示图片,则表示配置成功。

  • 耐心是一切聪明才智的基础。