使用属性表:VS2013上配置OpenCV

以前,windows下配置OpenCV一直不太方便:总是要手动添加lib,添加include,还要配置PATH使得程序运行时候能找到dll文件。

每次新建一个使用OpenCV的工程都要手动添加,很麻烦;而且,有时候需要不同版本的OpenCV测试。如果从32位模式切换到64位模式,又需要替换一次配置。。一旦有一个配错了,就总是徘徊在各种配置项的检查上。

后来,看到了freedomshe用属性表进行配置,其提供的属性表文件确实方便,但是还是需要手动配置OpenCV环境变量、追加OpenCV中的bin目录到PATH上(bin中有dll文件)。能不能不配置?(免得保不准自己又要重启机器...)

答案当然是可以!

配置OpenCV环境变量的目的在于,include路径、lib路径都使用这个前缀,能减少打字的次数;同时也是要把opencv的几个dll文件所在路径,追加到系统PATH上。
只要我们在属性表文件中自行定义OpenCV根目录,添加include路径、lib路径,添加dll目录,以后使用OpenCV的项目只需要导入这个属性表就OK了,太简单了!

当然,以前的老版本中的各种dll和lib分成好多个文件,现在的版本如果编译了opencv_contrib也会有额外的dll和lib,这些需要的时候再添加就好了。

废话不多说,这是OpenCV3.0.0的通用属性表文件opencv300.props

<?xml version="1.0" encoding="utf-8"?>
<!--
     OpenCV 3.0.0 属性表文件
     不用单独配置环境变量OpenCV
     也不用单独在系统PATH上添加OpenCV可执行路径
     只需要在 "菜单"-"视图"-"属性管理器"中添加现有属性表,添加本文件

     使用前请将下面的OpenCVRoot修改为你的OpenCV根目录
-->

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ImportGroup Label="PropertySheets" />
    <PropertyGroup Label="UserMacros" />
    <PropertyGroup>

        <!-- 请把OpenCVRoot属性的值替换为你的OpenCV编译输出的目标目录,它包含x64、x86这样的子目录 -->
        <OpenCVRoot>F:\chris\lib\opencv-3.1.0\buildExtra\install</OpenCVRoot>

        <!-- 指定INCLUDE路径-->
        <IncludePath>$(OpenCVRoot)\include;$(IncludePath)</IncludePath>

        <!-- 指定链接所需lib目录-->
        <LibraryPath Condition="'$(Platform)'=='Win32'">$(OpenCVRoot)\x86\vc12\lib;$(LibraryPath)</LibraryPath>
        <LibraryPath Condition="'$(Platform)'=='X64'">$(OpenCVRoot)\x64\vc12\lib;$(LibraryPath)</LibraryPath>

        <!-- 保证系统处于Debug模式时,可以使用相对路径读取源代码目录下的文件,比如"lena.jpg"而不必是"d:/work/test/test/lena.jpg" -->
        <LocalDebuggerWorkingDirectory>$(ProjectDir)</LocalDebuggerWorkingDirectory>
        <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>

        <!-- 让系统PATH临时包含指定的dll目录 -->
        <LocalDebuggerEnvironment Condition="'$(Platform)'=='Win32'">PATH=%PATH%;$(OpenCVRoot)\x86\vc12\bin</LocalDebuggerEnvironment>
        <LocalDebuggerEnvironment Condition="'$(Platform)'=='X64'">PATH=%PATH%;$(OpenCVRoot)\x64\vc12\bin</LocalDebuggerEnvironment>
    </PropertyGroup>

    <!-- 以下是程序需要加载的lib文件。-->
    <ItemDefinitionGroup>
        <Link Condition="'$(Configuration)'=='Debug'">
            <AdditionalDependencies>opencv_ts300d.lib;opencv_world310d.lib;%(AdditionalDependencies)</AdditionalDependencies>
        </Link>
        <Link Condition="'$(Configuration)'=='Release'">
            <AdditionalDependencies>opencv_ts300.lib;opencv_world310.lib;%(AdditionalDependencies)</AdditionalDependencies>
        </Link>
    </ItemDefinitionGroup>
    <ItemGroup />
</Project>

如果是opencv3.1那么lib只需要配置opencv_world310,对应的属性表文件为:

<?xml version="1.0" encoding="utf-8"?>
<!--
     OpenCV 3.1.0属性表文件
     不用单独配置环境变量OpenCV
     也不用单独在系统PATH上添加OpenCV可执行路径
     只需要在VisualStudio-"菜单"-"视图"-"属性管理器"中添加现有属性表,添加本文件

     使用前请将下面的OpenCVRoot修改为你的OpenCV编译输出目录
-->

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ImportGroup Label="PropertySheets" />
    <PropertyGroup Label="UserMacros" />
    <PropertyGroup>

        <!-- 请把OpenCVRoot属性的值替换为你的OpenCV编译输出的目标目录,它包含x64、x86这样的子目录 -->
        <OpenCVRoot>D:\lib\opencv310\build</OpenCVRoot>

        <!-- 指定INCLUDE路径-->
        <IncludePath>$(OpenCVRoot)\include;$(IncludePath)</IncludePath>

        <!-- 指定链接所需lib目录-->
        <LibraryPath Condition="'$(Platform)'=='Win32'">$(OpenCVRoot)\x86\vc12\lib;$(LibraryPath)</LibraryPath>
        <LibraryPath Condition="'$(Platform)'=='X64'">$(OpenCVRoot)\x64\vc12\lib;$(LibraryPath)</LibraryPath>

        <!-- 保证系统处于Debug模式时,可以使用相对路径读取源代码目录下的文件,比如"lena.jpg"而不必是"d:/work/test/test/lena.jpg" -->
        <LocalDebuggerWorkingDirectory>$(ProjectDir)</LocalDebuggerWorkingDirectory>
        <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>

        <!-- 让系统PATH临时包含指定的dll目录 -->
        <LocalDebuggerEnvironment Condition="'$(Platform)'=='Win32'">PATH=%PATH%;$(OpenCVRoot)\x86\vc12\bin</LocalDebuggerEnvironment>
        <LocalDebuggerEnvironment Condition="'$(Platform)'=='X64'">PATH=%PATH%;$(OpenCVRoot)\x64\vc12\bin</LocalDebuggerEnvironment>
    </PropertyGroup>

    <!-- 以下是程序需要加载的lib文件。-->
    <ItemDefinitionGroup>
        <Link Condition="'$(Configuration)'=='Debug'">
            <AdditionalDependencies>opencv_world310d.lib;%(AdditionalDependencies)</AdditionalDependencies>
        </Link>
        <Link Condition="'$(Configuration)'=='Release'">
            <AdditionalDependencies>opencv_world310.lib;%(AdditionalDependencies)</AdditionalDependencies>
        </Link>
    </ItemDefinitionGroup>
    <ItemGroup />
</Project>

当然有时候需要使用OpenCV_contrib,那么编译好contrib后就增加了很多dll和lib,对应的属性表文件是这样的(opencv3.1版):

<?xml version="1.0" encoding="utf-8"?>
<!--
     OpenCV 3.1.0 带contrib的属性表文件
     不用单独配置环境变量OpenCV
     也不用单独在系统PATH上添加OpenCV可执行路径
     只需要在 "菜单"-"视图"-"属性管理器"中添加现有属性表,添加本文件

     使用前请将下面的OpenCVRoot修改为你的OpenCV根目录
-->

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ImportGroup Label="PropertySheets" />
    <PropertyGroup Label="UserMacros" />
    <PropertyGroup>

        <!-- 请把OpenCVRoot属性的值替换为你的OpenCV编译输出的目标目录,它包含x64、x86这样的子目录 -->
        <OpenCVRoot>F:\chris\lib\opencv-3.1.0\buildExtra\install</OpenCVRoot>

        <!-- 指定INCLUDE路径-->
        <IncludePath>$(OpenCVRoot)\include;$(IncludePath)</IncludePath>

        <!-- 指定链接所需lib目录-->
        <LibraryPath Condition="'$(Platform)'=='Win32'">$(OpenCVRoot)\x86\vc12\lib;$(LibraryPath)</LibraryPath>
        <LibraryPath Condition="'$(Platform)'=='X64'">$(OpenCVRoot)\x64\vc12\lib;$(LibraryPath)</LibraryPath>

        <!-- 保证系统处于Debug模式时,可以使用相对路径读取源代码目录下的文件,比如"lena.jpg"而不必是"d:/work/test/test/lena.jpg" -->
        <LocalDebuggerWorkingDirectory>$(ProjectDir)</LocalDebuggerWorkingDirectory>
        <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>

        <!-- 让系统PATH临时包含指定的dll目录 -->
        <LocalDebuggerEnvironment Condition="'$(Platform)'=='Win32'">PATH=%PATH%;$(OpenCVRoot)\x86\vc12\bin</LocalDebuggerEnvironment>
        <LocalDebuggerEnvironment Condition="'$(Platform)'=='X64'">PATH=%PATH%;$(OpenCVRoot)\x64\vc12\bin</LocalDebuggerEnvironment>
    </PropertyGroup>

    <!-- 以下是程序需要加载的lib文件。-->
    <ItemDefinitionGroup>
        <Link Condition="'$(Configuration)'=='Debug'">
            <AdditionalDependencies>opencv_aruco310d.lib;opencv_bgsegm310d.lib;opencv_bioinspired310d.lib;opencv_calib3d310d.lib;opencv_ccalib310d.lib;opencv_core310d.lib;opencv_cudaarithm310d.lib;opencv_cudabgsegm310d.lib;opencv_cudacodec310d.lib;opencv_cudastereo310d.lib;opencv_cudawarping310d.lib;opencv_cudev310d.lib;opencv_datasets310d.lib;opencv_dnn310d.lib;opencv_dpm310d.lib;opencv_face310d.lib;opencv_features2d310d.lib;opencv_flann310d.lib;opencv_fuzzy310d.lib;opencv_highgui310d.lib;opencv_imgcodecs310d.lib;opencv_imgproc310d.lib;opencv_line_descriptor310d.lib;opencv_ml310d.lib;opencv_objdetect310d.lib;opencv_optflow310d.lib;opencv_plot310d.lib;opencv_reg310d.lib;opencv_rgbd310d.lib;opencv_saliency310d.lib;opencv_shape310d.lib;opencv_stereo310d.lib;opencv_structured_light310d.lib;opencv_surface_matching310d.lib;opencv_text310d.lib;opencv_tracking310d.lib;opencv_ts310d.lib;opencv_video310d.lib;opencv_videoio310d.lib;opencv_world310d.lib;opencv_ximgproc310d.lib;opencv_xobjdetect310d.lib;%(AdditionalDependencies)</AdditionalDependencies>
        </Link>
        <Link Condition="'$(Configuration)'=='Release'">
            <AdditionalDependencies>opencv_aruco310.lib;opencv_bgsegm310.lib;opencv_bioinspired310.lib;opencv_calib3d310.lib;opencv_ccalib310.lib;opencv_core310.lib;opencv_cudaarithm310.lib;opencv_cudabgsegm310.lib;opencv_cudacodec310.lib;opencv_cudastereo310.lib;opencv_cudawarping310.lib;opencv_cudev310.lib;opencv_datasets310.lib;opencv_dnn310.lib;opencv_dpm310.lib;opencv_face310.lib;opencv_features2d310.lib;opencv_flann310.lib;opencv_fuzzy310.lib;opencv_highgui310.lib;opencv_imgcodecs310.lib;opencv_imgproc310.lib;opencv_line_descriptor310.lib;opencv_ml310.lib;opencv_objdetect310.lib;opencv_optflow310.lib;opencv_plot310.lib;opencv_reg310.lib;opencv_rgbd310.lib;opencv_saliency310.lib;opencv_shape310.lib;opencv_stereo310.lib;opencv_structured_light310.lib;opencv_surface_matching310.lib;opencv_text310.lib;opencv_tracking310.lib;opencv_ts310.lib;opencv_video310.lib;opencv_videoio310.lib;opencv_world310.lib;opencv_ximgproc310.lib;opencv_xobjdetect310.lib;%(AdditionalDependencies)</AdditionalDependencies>
        </Link>
    </ItemDefinitionGroup>
    <ItemGroup />
</Project>

===========
P.S. 有人可能会问,上面的属性表XML文件里面的各属性是如何确定的?属性值容易设定,属性名确实不是一眼看出来的。
可以通过新建一个工程,在工程的属性中手动设定VC++、C/C++、链接器等条目中的项,进行设定后vs2013会写入到/.vcxproj.user这个文件中。手动在GUI界面中设定了需要的属性后,查看.vcxproj.user文件,把需要的属性剪切到属性表文件中,以后同类型的工程就可以仅仅使用此属性表文件进行配置了。比如dll的路径,通过当前工程的属性->调试->工作目录进行设定:

时间: 2025-01-31 10:18:02

使用属性表:VS2013上配置OpenCV的相关文章

属性表标签上的位图在MFC、CB下的实现

属性表标签(tab control)支持在每一个item上放Image 图片.在mfc下实现相当简单,可分为以下几步: step1: create a bitmap resource with the images you can also use icons or even create the images at run time. the size of the images should be in proportion to the height of the label. step2

配置OpenCV+VS2013环境

配置OpenCV+VS2013环境 准备工作 win7系统 下载opencv的windows编译版 安装vs2013 express 设定环境变量 按windows窗键输入path,选择第二个结果编辑系统环境变量 新建系统变量OPENCV,值为你opencv解压后的build子目录路径,build表示为vc编译器编译好的. 注意! 这里OEPCV的值最好直接从explorer的地址栏copy过来,反斜杠的形式.先前使用unix风格的斜杠"/",结果vs2013中一直配置不好. 然后,编

android st...-android studio上如何配置opencv?

问题描述 android studio上如何配置opencv? 如题.本人刚接触在android平台的模式识别,求指点opencv如何配置. 解决方案 1.下载 进入官网(http://opencv.org/)下载OpenCV4Android并解压.目录结构如下图所示. 其中,sdk目录即是我们开发opencv所需要的类库:samples目录中存放着若干opencv应用示例(包括人脸检测等),可为我们进行android下的opencv开发提供参考:doc目录为opencv类库的使用说明及api文

《虚拟化安全解决方案》一2.3 在Windows Server 2008上配置Microsoft Hyper-V

2.3 在Windows Server 2008上配置Microsoft Hyper-V 配置Microsoft Hyper-V是在很大方面比锁定一些其他虚拟平台更简单许多的.原因很简单--它运行在Windows Server 2008上!好吧,也不全是这个原因.尽管许多人相信Hyper-V是类型2的虚拟机管理程序,因为它与一个标准的操作系统一起运行,实际情况并非如此.当你在Windows 2008平台上安装Hyper-V角色的时候,运行的操作系统实际是封装的,并变成了虚拟管理程序层上的"父虚拟

常见设备和系统上配置DNS的方法

1. 通过宽带路由器上网的用户 如果电脑通过宽带路由器并使用DHCP方式获取DNS和IP地址的情况时: 1) 如果宽带路由器是通过PPPOE拨号方式或DHCP方式自动获取IP地址,宽带路由器则可以自动获取电信预配置的主备DNS. 2) 如果宽带路由器是直接配置电信分配的静态IP地址,可以参照配置手册在相应的配置页面上人工配置主备DNS服务器,用于DHCP获取地址时同时下发DNS配置. 3) 电脑上配置成自动获取IP地址和自动获取DNS服务器地址,具体配置为:打开"控制面板"中的&quo

如何实现由列表控件控制的属性表

摘要:很多MFC的程序都用到了属性表和属性页来实现选项设置的界面,但是MFC本身提供的属性表页功能有限,界面也很原始,一些新软件都实现了自己定义的更为美观的属性页.MFC原始的属性页是通过CTabCtrl进行切换控制的,本文给出了一种现在较为常见的用CListCtrl进行页面切换的属性页的方法,并且对对列表控件进行了重绘. CMyPropertySheet是一个从CPropertySheet派生而来的类,因此你仍然可以不费力的利用MFC CPropertySheet的诸多特性,具体使用方法稍后我

在Weblogic 8.1上配置Hibernate 3.0

下面是在WebLogic 8.1上配置Hibernate的具体步骤: ◆首先要创建一个域.我创建了一个WebLogic Workshop(WLW)域,因为我打算使用WLW来创建和实现应用程序. ◆将hibernate...\lib\antlr-2.7.5H3.jar添加到PRE_CLASSPATH,或者在hibernate.cfg.xml文件中将query.factory_class属性设为user 2.x's query factory. ◆WLW域还启动了一个PointBase数据库实例.我

如何在Cisco Switch上配置IP

如何在Cisco Switch上配置IP Address和MAC Address的binding 内容提要: 目前,很多公司的内部网络,都采用了MAC地址与IP地址的绑定技术.下面我们就针对Cisco的交换机介绍一下IP地址和MAC地址绑定的配置方案. 说明: 目前,很多公司的内部网络,都采用了MAC地址与IP地址的绑定技术.下面我们就针对Cisco的交换机介绍一下IP地址和MAC地址绑定的配置方案. IP地址与MAC地址的关系: IP地址是根据现在的IPv4标准指定的,不受硬件限制长度4个字节

Windows 2003 server R2 的IIS上配置Webdav

  通常,进行文件共享在局域网内一般会通过file协议,也就是普通的文件共享来进行;在internet上则通常利用ftp或者http协议进行.但是利用http一般只是单向的共享,不便于文件上传,传统地会使用ftp.但是windows server还可以利用webdav(web-based distributed authoring and versioning,基于web的分布式创作和版本控制)来进行文件共享. webdav是基于 http 1.1 的一个通信协议.它为 http 1.1 添加了