1. 程式人生 > >Windows10下VS2013+PCL1.8環境配置

Windows10下VS2013+PCL1.8環境配置

剛換了機子配PCL,Windows下配環境實在是太蛋疼了,上次沒有記錄配置的過程,所以又得各種搜教程,關鍵是很多部落格上寫的教程都不對啊!!!不知道寫出一個不對的配置方法給人看是怎樣的一種心態。。這次一定要詳細記下來:

配置過程

1.下載安裝PCL

下載PCL-1.8.0-AllInOne-msvc2013-win64並安裝,一直下一步就好。注意:中途會彈出安裝OpenNI的框,我們將OpenNI安裝在PCL安裝目錄下3rdParty\OpenNI2裡。  下載連結:http://pan.baidu.com/s/1hrAhLK4 密碼:1evw

2.配置系統變數:

安裝好後,會自動出現如下幾個變數: 這裡寫圖片描述

 這裡寫圖片描述

接著,我們需要自己新增如下幾個變數:  首先是path,第一個是安裝完自己加的,我們需要手動新增其他三個: 

è¿éåå¾çæè¿°

3.配置專案工程屬性檔案

(1)新建一個空專案,將專案設定成64位,這個沒什麼好說的。  (2)切換屬性管理器,在Debug|64下新增新專案屬性表,取名PCL。  左側VC++目錄,包含目錄設定如圖:

è¿éåå¾çæè¿°

左側VC++目錄,庫目錄設定如圖:

è¿éåå¾çæè¿°

左側鏈接器-輸入,附加依賴項: 

è¿éåå¾çæè¿°

配置如下:  pcl_apps_debug.lib  pcl_common_debug.lib  pcl_features_debug.lib  pcl_filters_debug.lib  pcl_io_ply_debug.lib  pcl_io_debug.lib  pcl_kdtree_debug.lib  pcl_keypoints_debug.lib  pcl_ml_debug.lib  pcl_octree_debug.lib  pcl_outofcore_debug.lib  pcl_people_debug.lib  pcl_recognition_debug.lib  pcl_registration_debug.lib  pcl_sample_consensus_debug.lib  pcl_search_debug.lib  pcl_segmentation_debug.lib  pcl_simulation_debug.lib  pcl_stereo_debug.lib  pcl_surface_debug.lib  pcl_tracking_debug.lib  pcl_visualization_debug.lib  libboost_atomic-vc120-mt-gd-1_59.lib  libboost_chrono-vc120-mt-gd-1_59.lib  libboost_container-vc120-mt-gd-1_59.lib  libboost_context-vc120-mt-gd-1_59.lib  libboost_coroutine-vc120-mt-gd-1_59.lib  libboost_date_time-vc120-mt-gd-1_59.lib  libboost_exception-vc120-mt-gd-1_59.lib  libboost_filesystem-vc120-mt-gd-1_59.lib  libboost_graph-vc120-mt-gd-1_59.lib  libboost_iostreams-vc120-mt-gd-1_59.lib  libboost_locale-vc120-mt-gd-1_59.lib  libboost_log-vc120-mt-gd-1_59.lib  libboost_log_setup-vc120-mt-gd-1_59.lib  libboost_math_c99-vc120-mt-gd-1_59.lib  libboost_math_c99f-vc120-mt-gd-1_59.lib  libboost_math_c99l-vc120-mt-gd-1_59.lib  libboost_math_tr1-vc120-mt-gd-1_59.lib  libboost_math_tr1f-vc120-mt-gd-1_59.lib  libboost_math_tr1l-vc120-mt-gd-1_59.lib  libboost_mpi-vc120-mt-gd-1_59.lib  libboost_prg_exec_monitor-vc120-mt-gd-1_59.lib  libboost_program_options-vc120-mt-gd-1_59.lib  libboost_random-vc120-mt-gd-1_59.lib  libboost_regex-vc120-mt-gd-1_59.lib  libboost_serialization-vc120-mt-gd-1_59.lib  libboost_signals-vc120-mt-gd-1_59.lib  libboost_system-vc120-mt-gd-1_59.lib  libboost_test_exec_monitor-vc120-mt-gd-1_59.lib  libboost_thread-vc120-mt-gd-1_59.lib  libboost_timer-vc120-mt-gd-1_59.lib  libboost_unit_test_framework-vc120-mt-gd-1_59.lib  libboost_wave-vc120-mt-gd-1_59.lib  libboost_wserialization-vc120-mt-gd-1_59.lib  flann-gd.lib  flann_cpp_s-gd.lib  flann_s-gd.lib  qhull-gd.lib  qhullcpp-gd.lib  qhullstatic-gd.lib  qhullstatic_r-gd.lib  qhull_p-gd.lib  qhull_r-gd.lib  vtkalglib-7.0-gd.lib  vtkChartsCore-7.0-gd.lib  vtkCommonColor-7.0-gd.lib  vtkCommonComputationalGeometry-7.0-gd.lib  vtkCommonCore-7.0-gd.lib  vtkCommonDataModel-7.0-gd.lib  vtkCommonExecutionModel-7.0-gd.lib  vtkCommonMath-7.0-gd.lib  vtkCommonMisc-7.0-gd.lib  vtkCommonSystem-7.0-gd.lib  vtkCommonTransforms-7.0-gd.lib  vtkDICOMParser-7.0-gd.lib  vtkDomainsChemistry-7.0-gd.lib  vtkDomainsChemistryOpenGL2-7.0-gd.lib  vtkexoIIc-7.0-gd.lib  vtkexpat-7.0-gd.lib  vtkFiltersAMR-7.0-gd.lib  vtkFiltersCore-7.0-gd.lib  vtkFiltersExtraction-7.0-gd.lib  vtkFiltersFlowPaths-7.0-gd.lib  vtkFiltersGeneral-7.0-gd.lib  vtkFiltersGeneric-7.0-gd.lib  vtkFiltersGeometry-7.0-gd.lib  vtkFiltersHybrid-7.0-gd.lib  vtkFiltersHyperTree-7.0-gd.lib  vtkFiltersImaging-7.0-gd.lib  vtkFiltersModeling-7.0-gd.lib  vtkFiltersParallel-7.0-gd.lib  vtkFiltersParallelImaging-7.0-gd.lib  vtkFiltersProgrammable-7.0-gd.lib  vtkFiltersSelection-7.0-gd.lib  vtkFiltersSMP-7.0-gd.lib  vtkFiltersSources-7.0-gd.lib  vtkFiltersStatistics-7.0-gd.lib  vtkFiltersTexture-7.0-gd.lib  vtkFiltersVerdict-7.0-gd.lib  vtkfreetype-7.0-gd.lib  vtkGeovisCore-7.0-gd.lib  vtkglew-7.0-gd.lib  vtkGUISupportQt-7.0-gd.lib  vtkGUISupportQtSQL-7.0-gd.lib  vtkhdf5-7.0-gd.lib  vtkhdf5_hl-7.0-gd.lib  vtkImagingColor-7.0-gd.lib  vtkImagingCore-7.0-gd.lib  vtkImagingFourier-7.0-gd.lib  vtkImagingGeneral-7.0-gd.lib  vtkImagingHybrid-7.0-gd.lib  vtkImagingMath-7.0-gd.lib  vtkImagingMorphological-7.0-gd.lib  vtkImagingSources-7.0-gd.lib  vtkImagingStatistics-7.0-gd.lib  vtkImagingStencil-7.0-gd.lib  vtkInfovisCore-7.0-gd.lib  vtkInfovisLayout-7.0-gd.lib  vtkInteractionImage-7.0-gd.lib  vtkInteractionStyle-7.0-gd.lib  vtkInteractionWidgets-7.0-gd.lib  vtkIOAMR-7.0-gd.lib  vtkIOCore-7.0-gd.lib  vtkIOEnSight-7.0-gd.lib  vtkIOExodus-7.0-gd.lib  vtkIOExport-7.0-gd.lib  vtkIOGeometry-7.0-gd.lib  vtkIOImage-7.0-gd.lib  vtkIOImport-7.0-gd.lib  vtkIOInfovis-7.0-gd.lib  vtkIOLegacy-7.0-gd.lib  vtkIOLSDyna-7.0-gd.lib  vtkIOMINC-7.0-gd.lib  vtkIOMovie-7.0-gd.lib  vtkIONetCDF-7.0-gd.lib  vtkIOParallel-7.0-gd.lib  vtkIOParallelXML-7.0-gd.lib  vtkIOPLY-7.0-gd.lib  vtkIOSQL-7.0-gd.lib  vtkIOVideo-7.0-gd.lib  vtkIOXML-7.0-gd.lib  vtkIOXMLParser-7.0-gd.lib  vtkjpeg-7.0-gd.lib  vtkjsoncpp-7.0-gd.lib  vtklibxml2-7.0-gd.lib  vtkmetaio-7.0-gd.lib  vtkNetCDF-7.0-gd.lib  vtkNetCDF_cxx-7.0-gd.lib  vtkoggtheora-7.0-gd.lib  vtkParallelCore-7.0-gd.lib  vtkpng-7.0-gd.lib  vtkproj4-7.0-gd.lib  vtkRenderingAnnotation-7.0-gd.lib  vtkRenderingContext2D-7.0-gd.lib  vtkRenderingContextOpenGL2-7.0-gd.lib  vtkRenderingCore-7.0-gd.lib  vtkRenderingFreeType-7.0-gd.lib  vtkRenderingImage-7.0-gd.lib  vtkRenderingLabel-7.0-gd.lib  vtkRenderingLOD-7.0-gd.lib  vtkRenderingOpenGL2-7.0-gd.lib  vtkRenderingQt-7.0-gd.lib  vtkRenderingVolume-7.0-gd.lib  vtkRenderingVolumeOpenGL2-7.0-gd.lib  vtksqlite-7.0-gd.lib  vtksys-7.0-gd.lib  vtktiff-7.0-gd.lib  vtkverdict-7.0-gd.lib  vtkViewsContext2D-7.0-gd.lib  vtkViewsCore-7.0-gd.lib  vtkViewsInfovis-7.0-gd.lib  vtkViewsQt-7.0-gd.lib  vtkzlib-7.0-gd.lib

上邊的包含目錄,庫目錄按你自己的來,附加依賴項有些庫版本不同,不同的建議去搜其他的。。

專案環境目錄配置

右鍵解決方案,屬性,左側配置屬性–除錯,右側環境設定為:  PATH=$(PCL_ROOT)\bin;$(PCL_ROOT)\3rdParty\FLANN\bin;$(PCL_ROOT)\3rdParty\VTK\bin  ;$(PCL_ROOT)\Qhull\bin;$(PCL_ROOT)\3rdParty\OpenNI2\Tools;$(PATH)  (為了好顯示我這裡換了一下行,你就不用換行了,一行放進去,可以的!)

測試一下

新建一個cpp檔案,輸入下列程式碼:

#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>

int user_data;

void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{
    viewer.setBackgroundColor(1.0, 0.5, 1.0);
    pcl::PointXYZ o;
    o.x = 1.0;
    o.y = 0;
    o.z = 0;
    viewer.addSphere(o, 0.25, "sphere", 0);
    std::cout << "i only run once" << std::endl;

}

void viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
{
    static unsigned count = 0;
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
    viewer.removeShape("text", 0);
    viewer.addText(ss.str(), 200, 300, "text", 0);

    //FIXME: possible race condition here:
    user_data++;
}

int main()
{
    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
    pcl::io::loadPCDFile("my_point_cloud.pcd", *cloud);

    pcl::visualization::CloudViewer viewer("Cloud Viewer");



    //blocks until the cloud is actually rendered
    viewer.showCloud(cloud);

    //use the following functions to get access to the underlying more advanced/powerful
    //PCLVisualizer

    //This will only get called once
    viewer.runOnVisualizationThreadOnce(viewerOneOff);

    //This will get called once per visualization iteration
    viewer.runOnVisualizationThread(viewerPsycho);
    while (!viewer.wasStopped())
    {
        //you can also do cool processing here
        //FIXME: Note that this is running in a separate thread from viewerPsycho
        //and you should guard against race conditions yourself...
        user_data++;
    }
    return 0;
}

執行之後出現影象,滑鼠滾輪可以調大小,能看到一個球證明你成功了!  好了,把那個屬性檔案儲存出來,每次用的時候在新建專案裡匯入就可以了……