win7下的PCL1.8-X64-VS2015配置(內含下載連結)
操作備忘錄
使用最新版的pcl1.8.1+vs2015跑下面的demo的時候會出現編譯ptr不是pcl成員變數的問題,所以這裡還是重新配置pcl1.8.0 -x64+vs2015的開發環境,主要參考該部落格:https://blog.csdn.net/bohaijun_123/article/details/73330516
裡面有網盤的下載連結和屬性的配置表,操作起來比較方便,推薦。
----------------------------------------------------------------------------------------------------------------------------------
注意:本文僅作學習交流使用,拒絕一切商業性目的使用,如有雷同或不足之處,敬請告知!
一、下載相關檔案
1.下載PCL-1.8.0-AllInOne-msvc2015-win64.exe、屬性表和PDB和測試pcd檔案rabbit.pcd,其中,屬性表可以不下載。
百度雲連結:http://pan.baidu.com/s/1jHEtSY6 密碼:nhbe
二、Windows7下安裝步驟:
1.點選PCL-1.8.0-AllInOne-msvc2015-win64.exe一鍵安裝,可以預設也可以自己選擇安裝路徑,如本文所選擇的路徑D:\Program Files;
2.在安裝過程中,OpenNI2在安裝時會彈出介面。其他教程中說可以自己選擇路徑(選擇第一步的),但本人安裝時並沒有彈出該介面,而是預設安裝,但安裝位置不對,需要手動將錯誤的資料夾下的OpenNI2移到D:\Program Files\PCL;
3.等待一段時間,則安裝完成。
注意事項:在安裝點選“我接收(I)”之後彈出來的對話方塊中一定要選擇第二項AddPCL to the system PATH for all users:(如圖)
三、系統配置步驟
1.點選win7的控制面板->系統->高階系統設定->在系統屬性的“高階選項”卡下點選“環境變數”;
2.在系統子選單裡面找到“Path”,如圖:
3.點選編輯,依次加入
D:\Program Files\PCL\bin;
D:\Program Files\PCL\3rdParty\FLANN\bin;
D:\ProgramFiles\PCL\3rdParty\Qhull\bin;
D:\Program;Files\PCL\3rdParty\VTK\bin;
D:\ProgramFiles\PCL\3rdParty\OpenNI2\Tools;
注意,第一項在“一鍵安裝”時就已經新增。
4.重啟電腦
四、VS2015工程配置步驟
1.開啟VS2015,建立新的win32控制檯工程,建好後將平臺改成X64;
2.點選專案選單的屬性,如圖:
3.在彈出的對話方塊中,
① 點選“包含目錄”下拉箭頭->編輯,新增檔案路徑:
完成後點選確定;
②點選“庫目錄”下拉箭頭->編輯,新增檔案路徑:
完成後點選確定;
4.點選聯結器->輸入->附加依賴項:
點選下拉箭頭->編輯,新增下列檔案:
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-vc140-mt-1_61.lib
libboost_chrono-vc140-mt-1_61.lib
libboost_container-vc140-mt-1_61.lib
libboost_context-vc140-mt-1_61.lib
libboost_coroutine-vc140-mt-1_61.lib
libboost_date_time-vc140-mt-1_61.lib
libboost_exception-vc140-mt-1_61.lib
libboost_filesystem-vc140-mt-1_61.lib
libboost_graph-vc140-mt-1_61.lib
libboost_iostreams-vc140-mt-1_61.lib
libboost_locale-vc140-mt-1_61.lib
libboost_log-vc140-mt-1_61.lib
libboost_log_setup-vc140-mt-1_61.lib
libboost_math_c99-vc140-mt-1_61.lib
libboost_math_c99f-vc140-mt-1_61.lib
libboost_math_c99l-vc140-mt-1_61.lib
libboost_math_tr1-vc140-mt-1_61.lib
libboost_math_tr1f-vc140-mt-1_61.lib
libboost_math_tr1l-vc140-mt-1_61.lib
libboost_mpi-vc140-mt-1_61.lib
libboost_prg_exec_monitor-vc140-mt-1_61.lib
libboost_program_options-vc140-mt-1_61.lib
libboost_random-vc140-mt-1_61.lib
libboost_regex-vc140-mt-1_61.lib
libboost_serialization-vc140-mt-1_61.lib
libboost_signals-vc140-mt-1_61.lib
libboost_system-vc140-mt-1_61.lib
libboost_test_exec_monitor-vc140-mt-1_61.lib
libboost_thread-vc140-mt-1_61.lib
libboost_timer-vc140-mt-1_61.lib
libboost_unit_test_framework-vc140-mt-1_61.lib
libboost_wave-vc140-mt-1_61.lib
libboost_wserialization-vc140-mt-1_61.lib
flann.lib
flann_s.lib
flann-gd.lib
flann_cpp_s.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
qhull.lib
qhull_d.lib
qhullcpp_d.lib
qhullstatic.lib
qhullstatic_d.lib
qhullstatic_r.lib
qhullstatic_r_d.lib
qhull_p.lib
qhull_p_d.lib
qhull_r.lib
qhull_r_d.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
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
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
vtkRenderingContextOpenGL-7.0.lib
vtkRenderingCore-7.0.lib
vtkRenderingFreeType-7.0.lib
vtkRenderingImage-7.0.lib
vtkRenderingLabel-7.0.lib
vtkRenderingLOD-7.0.lib
vtkRenderingOpenGL-7.0.lib
vtkRenderingVolume-7.0.lib
vtkRenderingVolumeOpenGL-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
vtkzlib-7.0.lib
完成後點選確定;
注意:上面為在release下執行的檔案,如果想在debug下執行,則將其中的release改成debug,r改成gd即可(其實對應的所有檔案都在PCL的各個lib中);
5.點選屬性頁的“確定”。
五、程式實際測試
將rabbit.pcd放到與main.cpp同一位置的資料夾下(工程資料夾)
程式程式碼:
#include<pcl/visualization/cloud_viewer.h>
#include<iostream>//標準C++庫中的輸入輸出類相關標頭檔案。
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>//pcd 讀寫類相關的標頭檔案。
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h> //PCL中支援的點型別標頭檔案。
int user_data;
using std::cout;
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer){
viewer.setBackgroundColor(1.0, 0.5, 1.0); //設定背景顏色
}
int main(){
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
char strfilepath[256] = "rabbit.pcd";
if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)){
cout << "error input!" << endl;
return -1;
}
cout << cloud->points.size() << endl;
pcl::visualization::CloudViewer viewer("Cloud Viewer"); //建立viewer物件
viewer.showCloud(cloud);
viewer.runOnVisualizationThreadOnce(viewerOneOff);
system("pause");
return 0;
}
實驗結果: