框架搭建

设想框架:

2017年4月19日(框架搭建)

2017年4月19日(框架搭建)

2017年4月19日(框架搭建)

VS2010 下的项目管理流程

2017年4月19日(框架搭建)

 RoadMarkingDetection

工程项目入口,启动项目,配置类型Configuration Type Application(.exe)

可以调用以下所有模块(.lib)。

commonClass

保存全局数据类、工具类、共同操作类等算法模块,配置类型Configuration Type Static library(.lib)

laneDetection

车道线检测算法模块,配置类型Configuration Type Static library(.lib),需调用commonClass模块。

typeDetection

车道线线型检测算法模块,配置类型Configuration Type Static library(.lib)

需要车道线检测结果,需调用laneDetectioncommonClass模块。

zebraDetection

斑马线检测算法模块,配置类型Configuration Type Static library(.lib)

需要车道线检测结果,需调用laneDetectioncommonClass模块。

stoplineDetection

停止线检测算法模块,配置类型Configuration Type Static library(.lib)

需要车道线检测结果,需调用laneDetectioncommonClass模块。

  • 添加多个项目

解决方案Solution à Add à New Project…

2017年4月19日(框架搭建)

 

  • 设置启动项

在需要设置为启动的项目目录上右键选择“Set as Startup Project”

2017年4月19日(框架搭建)

  • VS工程中设置所有的输出目录:

为了在工程中方便调用各个模块(项目),可以将所有的输出文件放在一个目录下。

默认下输出是:$(SolutionDir)$(Configuration)\

即在debug下输出在项目文件夹下的debug文件夹下;release下输出在项目文件夹下的release文件夹下。

假设:现在不管debugrelease都输出在工程文件夹下的bin文件夹。

在项目下右键选择项目属性“Properties” à General à Output Directory

设置为: $(ProjectDir)..\bin

2017年4月19日(框架搭建)

 

  • 设置模块lib属性

如果没有加载其他依赖库,只需要设置:

Output DirectoryConfiguration Type

2017年4月19日(框架搭建)

 

  • 设置启动项目属性

在项目下右键选择项目属性“Properties” à Debugging à Command

设置为:$(ProjectDir)..\bin\$(TargetName)$(TargetExt)

在项目下右键选择项目属性“Properties” à Debugging à Working Directory

设置为:$(ProjectDir)..\bin

2017年4月19日(框架搭建)

 

  • 设置exe项目包含lib项目属性

RoadMarkingDetection项目需要可以调用所有模块(.lib),在没有加载其他依赖库时设置以下属性:

项目属性“Properties” à C/C++ à GeneralàAdditional Include Directories

设置为:

..\commonClass\

..\laneDetection\

..\typeDetection\

..\zebraDetection\

..\stoplineDetection\

项目属性“Properties” à Linker à InputàAddition Dependencies

设置为:

$(ProjectDir)..\bin\commonClass.lib

$(ProjectDir)..\bin\laneDetection.lib

$(ProjectDir)..\bin\typeDetection.lib

$(ProjectDir)..\bin\zebraDetection.lib

$(ProjectDir)..\bin\stoplineDetection.lib

2017年4月19日(框架搭建)

2017年4月19日(框架搭建)

 

  • 设置lib项目包含lib项目属性

工程内laneDetection、typeDetection、 zebraDetection、stoplineDetection等模块都需要调用commonClass(lib)。没有加载其他依赖库时设置以下属性:

项目属性“Properties” à C/C++ à GeneralàAdditional Include Directories

设置为:..\commonClass\

(可选)项目属性“Properties” à Librarian à GeneralàAdditional Dependencies

设置为:..\commonClass\

   

2017年4月19日(框架搭建)

 

 

  • lib项目加OpenCV依赖库

  VS项目中使用OpenCV网上有很多教程,大致是以下步骤:

                   ①在“Properties” àVC++ DirectoriesàInclude Directories

输入:

OpenCV目录)\build\include

OpenCV目录)\build\include\opencv2

OpenCV目录)\build\include\opencv

②在“Properties” àVC++ DirectoriesàLibrary Directories

输入:

OpenCV目录)\build\x86\vc10\lib

在“Properties” àLinkerà InputàAddition Dependencies

OpenCV目录)\build\x86\vc10\lib\*.lib

OpenCV目录)\build\x86\vc10\lib\*d.lib

Debug版用到的dlllib文件都有后缀dRelease版使用的不带d

 

我们将配置属性写入属性文件.props

 这里有几篇参考文献:

VS .props解析:

http://casparzhang.blog.163.com/blog/static/126626558201310179534471/

Visual Studio 2010 C++ 工程文件解读 

http://www.cnblogs.com/yaozhongxiao/p/3477308.html

VS2010属性表的建立与灵活运用 

http://blog.163.com/yuhua_kui/blog/static/9679964420146945822643/

  

 将编译完的OpenCV3.0.0放在解决方案根目录下。

 属性配置文件myprop.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">

    <OPENCV_300_X86_VC10_LIB>$(SolutionDir)OpenCV3.0.0\x86\vc10\lib</OPENCV_300_X86_VC10_LIB>     <OPENCV_300_X86_VC10_LIB_CORE>$(OPENCV_300_X86_VC10_LIB)\opencv_core300.lib</OPENCV_300_X86_VC10_LIB_CORE>     <OPENCV_300_X86_VC10_LIB_HGUI>$(OPENCV_300_X86_VC10_LIB)\opencv_highgui300.lib</OPENCV_300_X86_VC10_LIB_HGUI>     <OPENCV_300_X86_VC10_LIB_IMGPROC>$(OPENCV_300_X86_VC10_LIB)\opencv_imgproc300.lib</OPENCV_300_X86_VC10_LIB_IMGPROC>    <OPENCV_300_X86_VC10_LIB_VIZ>$(OPENCV_300_X86_VC10_LIB)\opencv_viz300.lib</OPENCV_300_X86_VC10_LIB_VIZ>    <OPENCV_300_X86_VC10_LIB_OBJ_DETECT>$(OPENCV_300_X86_VC10_LIB)\opencv_objdetect300.lib</OPENCV_300_X86_VC10_LIB_OBJ_DETECT>

                   <OPENCV_300_X86_VC10_LIB_CODECS>$(OPENCV_300_X86_VC10_LIB)\opencv_imgcodecs300.lib</OPENCV_300_X86_VC10_LIB_CODECS>

    <OPENCV_300_INCLUDE>$(SolutionDir)OpenCV3.0.0\include\</OPENCV_300_INCLUDE>

     <RINS_FA_STEREO_DEV>$(SolutionDir)RStereoGigEDev\</RINS_FA_STEREO_DEV>

     <RINS_FA_STEREO_DEV_VER>2.1.0.213\</RINS_FA_STEREO_DEV_VER>

  </PropertyGroup>

  <PropertyGroup />

  <ItemDefinitionGroup />

  <ItemGroup>

    <BuildMacro  Include="OPENCV_300_X86_VC10_LIB">

       <Value>$(OPENCV_300_X86_VC10_LIB)</Value>

       <EnvironmentVariable>true</EnvironmentVariable>

    </BuildMacro>

    <BuildMacro  Include="OPENCV_300_X86_VC10_LIB_CORE">

      <Value>$(OPENCV_300_X86_VC10_LIB_CORE)</Value>

       <EnvironmentVariable>true</EnvironmentVariable>

    </BuildMacro>

    <BuildMacro  Include="OPENCV_300_X86_VC10_LIB_HGUI">

       <Value>$(OPENCV_300_X86_VC10_LIB_HGUI)</Value>

       <EnvironmentVariable>true</EnvironmentVariable>

    </BuildMacro>

    <BuildMacro  Include="OPENCV_300_X86_VC10_LIB_IMGPROC">

       <Value>$(OPENCV_300_X86_VC10_LIB_IMGPROC)</Value>

       <EnvironmentVariable>true</EnvironmentVariable>

    </BuildMacro>

    <BuildMacro  Include="OPENCV_300_X86_VC10_LIB_VIZ">

       <Value>$(OPENCV_300_X86_VC10_LIB_VIZ)</Value>

       <EnvironmentVariable>true</EnvironmentVariable>

    </BuildMacro>

    <BuildMacro  Include="OPENCV_300_X86_VC10_LIB_OBJ_DETECT">

      <Value>$(OPENCV_300_X86_VC10_LIB_OBJ_DETECT)</Value>

       <EnvironmentVariable>true</EnvironmentVariable>

    </BuildMacro>

                   <BuildMacro  Include="OPENCV_300_X86_VC10_LIB_CODECS">

       <Value>$(OPENCV_300_X86_VC10_LIB_CODECS)</Value>

      <EnvironmentVariable>true</EnvironmentVariable>

    </BuildMacro>

    <BuildMacro  Include="OPENCV_300_INCLUDE">

       <Value>$(OPENCV_300_INCLUDE)</Value>

       <EnvironmentVariable>true</EnvironmentVariable>

    </BuildMacro>

     </ItemGroup>

</Project>

  导入属性配置文件myprop.props

   项目属性“Properties” à C/C++ à GeneralàAdditional Include Directories

设置为:$(OPENCV_300_INCLUDE)

   项目属性“Properties” à Librarian à GeneralàAdditional Dependencies

设置为:

$(OPENCV_300_X86_VC10_LIB_CORE)

$(OPENCV_300_X86_VC10_LIB_HGUI)

$(OPENCV_300_X86_VC10_LIB_IMGPROC)

 

  • exe项目加OpenCV依赖库

①项目属性“Properties” à C/C++ à GeneralàAdditional Include Directories

设置为:$(OPENCV_300_INCLUDE)

②项目属性“Properties” à Librarian à GeneralàAdditional Dependencies

设置为:

$(OPENCV_300_X86_VC10_LIB_CORE)

$(OPENCV_300_X86_VC10_LIB_HGUI)

$(OPENCV_300_X86_VC10_LIB_IMGPROC)

$(OPENCV_300_X86_VC10_LIB_CODECS)

$(OPENCV_300_X86_VC10_LIB_VIZ)