pcl1.8.0+vs2013環(huán)境配置超詳細(xì)教程
最近開始學(xué)習(xí)pcl,經(jīng)過幾天的搗鼓終于將pcl1.8.0和vs2013的環(huán)境搭建起來。
準(zhǔn)備
pcl版本:PCL-1.8.0-AllInOne-msvc2013-win64
vs版本:vs2013
下載地址鏈接:鏈接: https://pan.baidu.com/s/1L6trLERkzylkBUjTw94RNQ?pwd=ep39 提取碼: ep39
因為我的電腦是64位的,所以只有64位版本。
安裝
vs2013下載解壓默認(rèn)安裝就好了。
PCL整個安裝過程需要注意以下三點,其它默認(rèn)即可(我是安裝在D盤):
1. 安裝路徑最好不要包括中文;
2. 建議勾選上“Add PCL to the system PATH for all users”;
3. 安裝時,會提示安裝OpenNI,這個建議安裝在PCL安裝路徑的3rdParty下的OpenNI2文件夾中。
安裝完成之后將下載好的PCL-1.8.0-AllInOne-msvc2013-win64-pdb,pdb文件拷貝到PCL ROOT下的bin文件夾中,下圖是拷貝后的樣子
配置
我們打開vs2013新建一個c++控制臺程序,選擇空項目,去掉“預(yù)編譯頭(P)”前的勾,去掉“安全開發(fā)生命周期(SDL)檢查(C)”前的勾,其它默認(rèn)即可。
在進(jìn)去之后我們可以看見調(diào)試器右邊有一個Debug 和Win32,我們需要了解的是編譯出的程序分成32位和64位,不同的位數(shù)需要不同的lib和dll才能編譯出來,這就需要我們下載對應(yīng)的pcl版本。不同的位數(shù)的程序分成Debug和Release,vs默認(rèn)的是Debug。假若需要生產(chǎn)上面4中程序需要分別設(shè)置對應(yīng)的項目屬性表。
首先將屬性管理器調(diào)出來
VS默認(rèn)只生成32位的程序,32位的屬性管理器中只有兩項:Debug|Win32以及Release|Win32,
如果需要生成64的程序,方法如下:VS界面有個運行項,后面有個debug,在后面有個叫“解決方案平臺”的下拉框,其值默認(rèn)為win32,需要把win32,改成x64
,方法是,點win32的箭頭,點“配置管理器”,點“活動解決方案平臺”,點“新建”,把“鍵入或選擇新平臺”,這一項,切換為x64,然后確定,此時,原來的win32已變?yōu)閤64。這時編譯生成的程序就是64位版本的,相應(yīng)的屬性管理器中變成四項。
下面我們就可以在屬性管理器中進(jìn)行屬性表的配置。選中其中一項,右鍵點擊“添加新項目屬性表”,在彈出的對話框里設(shè)置好對應(yīng)的屬性表名和路徑。確認(rèn)之后,在該項中就會多出一項以剛才屬性表名為名稱的屬性表。
注:下面配置的是Debugx64的屬性表?。?!
在新建的屬性表里,有三個必須設(shè)置的重要項目:附加包含目錄,附加庫目錄,附加依賴項。
1. 附加包含目錄,其在項目屬性“C/C++”子項的“常規(guī)”里下,主要用來設(shè)置庫的頭文件路徑。這里設(shè)置好PCL及第三方庫的頭文件路徑。
D:\PCL 1.8.0\include\pcl-1.8
D:\PCL 1.8.0\3rdParty\Boost\include\boost-1_59
D:\PCL 1.8.0\3rdParty\Eigen\eigen3
D:\PCL 1.8.0\3rdParty\FLANN\include
D:\PCL 1.8.0\3rdParty\OpenNI2\Include
D:\PCL 1.8.0\3rdParty\Qhull\include
D:\PCL 1.8.0\3rdParty\VTK\include\vtk-7.0
2. 附加庫目錄,其在項目屬性的“連接器”子項的“常規(guī)”下,主要用來設(shè)置庫的lib文件路徑。這里設(shè)置好設(shè)置PCL及第三方庫的lib文件路徑。
D:\PCL 1.8.0\lib
D:\PCL 1.8.0\3rdParty\Boost\lib
D:\PCL 1.8.0\3rdParty\FLANN\lib
D:\PCL 1.8.0\3rdParty\OpenNI2\lib
D:\PCL 1.8.0\3rdParty\Qhull\lib
D:\PCL 1.8.0\3rdParty\VTK\lib
3. 附加依賴項,其在項目屬性的“連接器”子項的“輸入”下,主要用來設(shè)置編譯所需的lib。這里設(shè)置好設(shè)置PCL及第三方庫的lib文件名。
直接復(fù)制下面就可以。
pcl_apps_debug.lib pcl_common_debug.lib pcl_features_debug.lib pcl_filters_debug.lib pcl_io_debug.lib pcl_io_ply_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_cpp_s-gd.lib flann_s-gd.lib flann-gd.lib OpenNI2.lib qhullstatic_r-gd.lib qhull_p-gd.lib qhull_r-gd.lib qhullcpp-gd.lib qhull-gd.lib qhullstatic-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
Releasex64版本的附加依賴項:
pcl_common_release.lib pcl_features_release.lib pcl_filters_release.lib pcl_io_ply_release.lib pcl_io_release.lib pcl_kdtree_release.lib pcl_keypoints_release.lib pcl_ml_release.lib pcl_octree_release.lib pcl_outofcore_release.lib pcl_people_release.lib pcl_recognition_release.lib pcl_registration_release.lib pcl_sample_consensus_release.lib pcl_search_release.lib pcl_segmentation_release.lib pcl_stereo_release.lib pcl_surface_release.lib pcl_tracking_release.lib pcl_visualization_release.lib libboost_atomic-vc120-mt-1_59.lib libboost_chrono-vc120-mt-1_59.lib libboost_container-vc120-mt-1_59.lib libboost_context-vc120-mt-1_59.lib libboost_coroutine-vc120-mt-1_59.lib libboost_date_time-vc120-mt-1_59.lib libboost_exception-vc120-mt-1_59.lib libboost_filesystem-vc120-mt-1_59.lib libboost_graph-vc120-mt-1_59.lib libboost_iostreams-vc120-mt-1_59.lib libboost_locale-vc120-mt-1_59.lib libboost_log-vc120-mt-1_59.lib libboost_log_setup-vc120-mt-1_59.lib libboost_math_c99-vc120-mt-1_59.lib libboost_math_c99f-vc120-mt-1_59.lib libboost_math_c99l-vc120-mt-1_59.lib libboost_math_tr1-vc120-mt-1_59.lib libboost_math_tr1f-vc120-mt-1_59.lib libboost_math_tr1l-vc120-mt-1_59.lib libboost_mpi-vc120-mt-1_59.lib libboost_prg_exec_monitor-vc120-mt-1_59.lib libboost_program_options-vc120-mt-1_59.lib libboost_random-vc120-mt-1_59.lib libboost_regex-vc120-mt-1_59.lib libboost_serialization-vc120-mt-1_59.lib libboost_signals-vc120-mt-1_59.lib libboost_system-vc120-mt-1_59.lib libboost_test_exec_monitor-vc120-mt-1_59.lib libboost_thread-vc120-mt-1_59.lib libboost_timer-vc120-mt-1_59.lib libboost_unit_test_framework-vc120-mt-1_59.lib libboost_wave-vc120-mt-1_59.lib libboost_wserialization-vc120-mt-1_59.lib flann_cpp_s.lib flann_s.lib qhull.lib qhullcpp.lib qhullstatic.lib qhullstatic_r.lib qhull_p.lib qhull_r.lib vtkalglib-7.0.lib vtkChartsCore-7.0.lib vtkCommonColor-7.0.lib vtkCommonComputationalGeometry-7.0.lib vtkCommonCore-7.0.lib vtkCommonDataModel-7.0.lib vtkCommonExecutionModel-7.0.lib vtkCommonMath-7.0.lib vtkCommonMisc-7.0.lib vtkCommonSystem-7.0.lib vtkCommonTransforms-7.0.lib vtkDICOMParser-7.0.lib vtkDomainsChemistry-7.0.lib vtkDomainsChemistryOpenGL2-7.0.lib vtkexoIIc-7.0.lib vtkexpat-7.0.lib vtkFiltersAMR-7.0.lib vtkFiltersCore-7.0.lib vtkFiltersExtraction-7.0.lib vtkFiltersFlowPaths-7.0.lib vtkFiltersGeneral-7.0.lib vtkFiltersGeneric-7.0.lib vtkFiltersGeometry-7.0.lib vtkFiltersHybrid-7.0.lib vtkFiltersHyperTree-7.0.lib vtkFiltersImaging-7.0.lib vtkFiltersModeling-7.0.lib vtkFiltersParallel-7.0.lib vtkFiltersParallelImaging-7.0.lib vtkFiltersProgrammable-7.0.lib vtkFiltersSelection-7.0.lib vtkFiltersSMP-7.0.lib vtkFiltersSources-7.0.lib vtkFiltersStatistics-7.0.lib vtkFiltersTexture-7.0.lib vtkFiltersVerdict-7.0.lib vtkfreetype-7.0.lib vtkGeovisCore-7.0.lib vtkglew-7.0.lib vtkGUISupportQt-7.0.lib vtkGUISupportQtSQL-7.0.lib vtkhdf5-7.0.lib vtkhdf5_hl-7.0.lib vtkImagingColor-7.0.lib vtkImagingCore-7.0.lib vtkImagingFourier-7.0.lib vtkImagingGeneral-7.0.lib vtkImagingHybrid-7.0.lib vtkImagingMath-7.0.lib vtkImagingMorphological-7.0.lib vtkImagingSources-7.0.lib vtkImagingStatistics-7.0.lib vtkImagingStencil-7.0.lib vtkInfovisCore-7.0.lib vtkInfovisLayout-7.0.lib vtkInteractionImage-7.0.lib vtkInteractionStyle-7.0.lib vtkInteractionWidgets-7.0.lib vtkIOAMR-7.0.lib vtkIOCore-7.0.lib vtkIOEnSight-7.0.lib vtkIOExodus-7.0.lib vtkIOExport-7.0.lib vtkIOGeometry-7.0.lib vtkIOImage-7.0.lib vtkIOImport-7.0.lib vtkIOInfovis-7.0.lib vtkIOLegacy-7.0.lib vtkIOLSDyna-7.0.lib vtkIOMINC-7.0.lib vtkIOMovie-7.0.lib vtkIONetCDF-7.0.lib vtkIOParallel-7.0.lib vtkIOParallelXML-7.0.lib vtkIOPLY-7.0.lib vtkIOSQL-7.0.lib vtkIOVideo-7.0.lib vtkIOXML-7.0.lib vtkIOXMLParser-7.0.lib vtkjpeg-7.0.lib vtkjsoncpp-7.0.lib vtklibxml2-7.0.lib vtkmetaio-7.0.lib vtkNetCDF-7.0.lib vtkNetCDF_cxx-7.0.lib vtkoggtheora-7.0.lib vtkParallelCore-7.0.lib vtkpng-7.0.lib vtkproj4-7.0.lib vtkRenderingAnnotation-7.0.lib vtkRenderingContext2D-7.0.lib vtkRenderingContextOpenGL2-7.0.lib vtkRenderingCore-7.0.lib vtkRenderingFreeType-7.0.lib vtkRenderingImage-7.0.lib vtkRenderingLabel-7.0.lib vtkRenderingLOD-7.0.lib vtkRenderingOpenGL2-7.0.lib vtkRenderingQt-7.0.lib vtkRenderingVolume-7.0.lib vtkRenderingVolumeOpenGL2-7.0.lib vtksqlite-7.0.lib vtksys-7.0.lib vtktiff-7.0.lib vtkverdict-7.0.lib vtkViewsContext2D-7.0.lib vtkViewsCore-7.0.lib vtkViewsInfovis-7.0.lib vtkViewsQt-7.0.lib vtkzlib-7.0.lib
配置完屬性表之后還需要配置dll。
配置dll有四種方法: 第一種,把dll拷貝到system32里去, 第二種,把dll拷貝到編譯出來的程序的文件中, 第三種,直接配置到項目中。 本文采用第四種方法,在系統(tǒng)的path中添加dll的路徑。具體方法如下:
首先將打開控制面板\系統(tǒng)和安全\系統(tǒng)->高級系統(tǒng)設(shè)置->環(huán)境變量
修改path路徑在后面添加下面的文字:
;%PCL_ROOT%\bin
;%PCL_ROOT%\3rdParty\Qhull\bin
;%PCL_ROOT%\3rdParty\FLANN\bin
;%PCL_ROOT%\3rdParty\VTK\bin
;%PCL_ROOT%\3rdParty\OpenNI2\Tools
這樣環(huán)境就配置完成了。
測試
代碼:
#include <pcl/visualization/cloud_viewer.h> #include <iostream> #include <pcl/io/io.h> #include <pcl/io/pcd_io.h> #include <iostream> #include <pcl/filters/filter.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("test_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()) { std::cout << cloud->width << endl; std::cout << cloud->height << endl; //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; }
可能會缺少test_cloud.pcd,造成沒有點云顯示,也無傷大雅。
最終的測試顯示。
本文在參考一些博客之后,發(fā)覺都不是很詳細(xì),特此寫下這篇文章以供初學(xué)者更清楚的配置。
到此這篇關(guān)于pcl1.8.0+vs2013環(huán)境配置超詳細(xì)教程的文章就介紹到這了,更多相關(guān)pcl1.8.0 vs2013配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Qt實現(xiàn)駕??颇靠荚囅到y(tǒng)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何基于Qt實現(xiàn)駕??颇靠荚囅到y(tǒng),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Qt有一定幫助,需要的可以參考一下2022-07-07C語言進(jìn)階輸入輸出重定向與fopen函數(shù)使用示例詳解
這篇文章主要為大家介紹了C語言進(jìn)階輸入輸出重定向與fopen函數(shù)的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02C++新特性詳細(xì)分析基于范圍的for循環(huán)
C++11這次的更新帶來了令很多C++程序員期待已久的for?range循環(huán),每次看到j(luò)avascript,?lua里的for?range,心想要是C++能有多好,心里別提多酸了。這次C++11不負(fù)眾望,再也不用羨慕別家人的for?range了。下面看下C++11的for循環(huán)的新用法2022-04-04