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

框架搭建

設想框架:

wKioL1j_FK-Bp8DjAAAqylaTFjc363.png-wh_50

wKiom1j_FKyDRnVoAAAcVyUU5mg784.png-wh_50

wKiom1j_FOGw9b-9AAE0Rcq9_ME956.png-wh_50

VS2010 下的項目管理流程

wKiom1j_FLPwcaAkAABAY6gUpC0499.png-wh_50

 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…

wKiom1j_Fo_SiLJtAAB_xLhvOv8487.png-wh_50

 

  • 設置啓動項

在需要設置爲啓動的項目目錄上右鍵選擇“Set as Startup Project”

wKiom1j_FLCxqMjHAAB_xLhvOv8337.png-wh_50

  • VS工程中設置所有的輸出目錄:

爲了在工程中方便調用各個模塊(項目),可以將所有的輸出文件放在一個目錄下。

默認下輸出是:$(SolutionDir)$(Configuration)\

即在debug下輸出在項目文件夾下的debug文件夾下;release下輸出在項目文件夾下的release文件夾下。

假設:現在不管debugrelease都輸出在工程文件夾下的bin文件夾。

在項目下右鍵選擇項目屬性“Properties” à General à Output Directory

設置爲: $(ProjectDir)..\bin

wKioL1j_FLLCQqUNAAB3HF3QYm0687.png-wh_50

 

  • 設置模塊lib屬性

如果沒有加載其他依賴庫,只需要設置:

Output DirectoryConfiguration Type

wKiom1j_FLfCMMf8AAB5g_Oua3k755.png-wh_50

 

  • 設置啓動項目屬性

在項目下右鍵選擇項目屬性“Properties” à Debugging à Command

設置爲:$(ProjectDir)..\bin\$(TargetName)$(TargetExt)

在項目下右鍵選擇項目屬性“Properties” à Debugging à Working Directory

設置爲:$(ProjectDir)..\bin

wKiom1j_FgyxuJIgAABttMWpGyA099.png-wh_50

 

  • 設置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

wKiom1j_F0Dy-VxsAAG4AYnw2H8841.png-wh_50

wKioL1j_FN3hgjHOAAFP29HYisk044.png-wh_50

 

  • 設置lib項目包含lib項目屬性

工程內laneDetection、typeDetection、 zebraDetection、stoplineDetection等模塊都需要調用commonClass(lib)。沒有加載其他依賴庫時設置以下屬性:

項目屬性“Properties” à C/C++ à GeneralàAdditional Include Directories

設置爲:..\commonClass\

(可選)項目屬性“Properties” à Librarian à GeneralàAdditional Dependencies

設置爲:..\commonClass\

   

wKioL1j_F1mT6HbEAAE0Rcq9_ME082.png-wh_50

 

 

  • 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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章