如何在vs2019中配置pcl1.9.1

之前接觸過一次vs(virual studio),是因爲自己想要學習.net開發,後來因爲別的項目就擱置了。近期男友的研究方向需要做點雲濾波,需要用到vs,這也重新拿起來這方面知識。下面,我將講述一下如果在vs2019中配置pcl1.9.1,同時實現點雲數據的可視化。
工具下載:
(1)visual studio的下載和安裝:安裝 visual studio 2019 Community版即可;鏈接:visual studio官網下載地址
(2)pcl 1.9.1的下載和安裝:具體的安裝可以參考百度教程,鏈接:github上的pcl下載資源
配置過程:
(1)電腦系統中配置環境變量,在安裝pcl的時候因爲選擇了“Add PCL to the system PATH for all users”,所以在控制面板-系統-高級系統設置-環境變量中就會有一下四個環境變量的自動生成,如果沒有,請自行添加:
在這裏插入圖片描述
(2)在Path中新建相關pcl的配置信息:
在這裏插入圖片描述
具體內容:
%PCL_ROOT%\bin;
%PCL_ROOT%\3rdParty\VTK\bin;
%PCL_ROOT%\3rdParty\FLANN\bin;
%PCL_ROOT%\3rdParty\Qhull\bin;
%OPENNI2_REDIST64%;
%PCL_ROOT%\3rdParty\OpenNI2\Tools;
%PCL_ROOT%\3rdParty\Boost\lib

!!!一定要注意配置完之後需要註銷或者重啓電腦纔可以生效哦,要不在之後的配置項目中會因爲無效而報錯。
(3)在vs中新建c++控制檯應用的項目:
在這裏插入圖片描述
(4)新建空項目完成之後,編譯環境選擇x64 Debug:
在這裏插入圖片描述
(5)配置Debug模式,打開項目-屬性,進入VC++目錄,點擊“包含目錄”,進行編輯:
在這裏插入圖片描述
新加入以下7項目錄,具體pcl地址根據自己的安裝位置進行調整:
在這裏插入圖片描述
具體內容:
D:\Download\PCL 1.9.1\3rdParty\Boost\include\boost-1_68
D:\Download\PCL 1.9.1\3rdParty\Eigen\eigen3
D:\Download\PCL 1.9.1\3rdParty\FLANN\include
D:\Download\PCL 1.9.1\3rdParty\Qhull\include
D:\Download\PCL 1.9.1\3rdParty\VTK\include\vtk-8.1
D:\Download\PCL 1.9.1\include\pcl-1.9
D:\Download\PCL 1.9.1\3rdParty\OpenNI2\Include

(6)進入VC++目錄,點擊“庫目錄”,進行編輯,添加以下內容:
在這裏插入圖片描述
具體內容:
D:\Download\PCL 1.9.1\3rdParty\OpenNI2\Lib
D:\Download\PCL 1.9.1\3rdParty\VTK\lib
D:\Download\PCL 1.9.1\3rdParty\Qhull\lib
D:\Download\PCL 1.9.1\3rdParty\FLANN\lib
D:\Download\PCL 1.9.1\3rdParty\Boost\lib
D:\Download\PCL 1.9.1\lib

(7)將C/C+±所有選項-SDL檢查改爲否:
在這裏插入圖片描述
(8)將C/C+±預處理器-預處理器定義,點擊下拉框進行編輯,增加以下內容:
在這裏插入圖片描述
具體內容:
_SCL_SECURE_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS

(9)打開項目-屬性,進入鏈接器下的輸入,點擊附加依賴項進行編輯,新增對應的.lib文件(PCL的和VTK的):
在這裏插入圖片描述
具體內容:
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_stereo_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib
vtkalglib-8.1-gd.lib
vtkChartsCore-8.1-gd.lib
vtkCommonColor-8.1-gd.lib
vtkCommonComputationalGeometry-8.1-gd.lib
vtkCommonCore-8.1-gd.lib
vtkCommonDataModel-8.1-gd.lib
vtkCommonExecutionModel-8.1-gd.lib
vtkCommonMath-8.1-gd.lib
vtkCommonMisc-8.1-gd.lib
vtkCommonSystem-8.1-gd.lib
vtkCommonTransforms-8.1-gd.lib
vtkDICOMParser-8.1-gd.lib
vtkDomainsChemistry-8.1-gd.lib
vtkexoIIc-8.1-gd.lib
vtkexpat-8.1-gd.lib
vtkFiltersAMR-8.1-gd.lib
vtkFiltersCore-8.1-gd.lib
vtkFiltersExtraction-8.1-gd.lib
vtkFiltersFlowPaths-8.1-gd.lib
vtkFiltersGeneral-8.1-gd.lib
vtkFiltersGeneric-8.1-gd.lib
vtkFiltersGeometry-8.1-gd.lib
vtkFiltersHybrid-8.1-gd.lib
vtkFiltersHyperTree-8.1-gd.lib
vtkFiltersImaging-8.1-gd.lib
vtkFiltersModeling-8.1-gd.lib
vtkFiltersParallel-8.1-gd.lib
vtkFiltersParallelImaging-8.1-gd.lib
vtkFiltersPoints-8.1-gd.lib
vtkFiltersProgrammable-8.1-gd.lib
vtkFiltersSelection-8.1-gd.lib
vtkFiltersSMP-8.1-gd.lib
vtkFiltersSources-8.1-gd.lib
vtkFiltersStatistics-8.1-gd.lib
vtkFiltersTexture-8.1-gd.lib
vtkFiltersTopology-8.1-gd.lib
vtkFiltersVerdict-8.1-gd.lib
vtkfreetype-8.1-gd.lib
vtkGeovisCore-8.1-gd.lib
vtkgl2ps-8.1-gd.lib
vtkhdf5-8.1-gd.lib
vtkhdf5_hl-8.1-gd.lib
vtkImagingColor-8.1-gd.lib
vtkImagingCore-8.1-gd.lib
vtkImagingFourier-8.1-gd.lib
vtkImagingGeneral-8.1-gd.lib
vtkImagingHybrid-8.1-gd.lib
vtkImagingMath-8.1-gd.lib
vtkImagingMorphological-8.1-gd.lib
vtkImagingSources-8.1-gd.lib
vtkImagingStatistics-8.1-gd.lib
vtkImagingStencil-8.1-gd.lib
vtkInfovisCore-8.1-gd.lib
vtkInfovisLayout-8.1-gd.lib
vtkInteractionImage-8.1-gd.lib
vtkInteractionStyle-8.1-gd.lib
vtkInteractionWidgets-8.1-gd.lib
vtkIOAMR-8.1-gd.lib
vtkIOCore-8.1-gd.lib
vtkIOEnSight-8.1-gd.lib
vtkIOExodus-8.1-gd.lib
vtkIOExport-8.1-gd.lib
vtkIOExportOpenGL-8.1-gd.lib
vtkIOGeometry-8.1-gd.lib
vtkIOImage-8.1-gd.lib
vtkIOImport-8.1-gd.lib
vtkIOInfovis-8.1-gd.lib
vtkIOLegacy-8.1-gd.lib
vtkIOLSDyna-8.1-gd.lib
vtkIOMINC-8.1-gd.lib
vtkIOMovie-8.1-gd.lib
vtkIONetCDF-8.1-gd.lib
vtkIOParallel-8.1-gd.lib
vtkIOParallelXML-8.1-gd.lib
vtkIOPLY-8.1-gd.lib
vtkIOSQL-8.1-gd.lib
vtkIOTecplotTable-8.1-gd.lib
vtkIOVideo-8.1-gd.lib
vtkIOXML-8.1-gd.lib
vtkIOXMLParser-8.1-gd.lib
vtkjpeg-8.1-gd.lib
vtkjsoncpp-8.1-gd.lib
vtklibharu-8.1-gd.lib
vtklibxml2-8.1-gd.lib
vtklz4-8.1-gd.lib
vtkmetaio-8.1-gd.lib
vtkNetCDF-8.1-gd.lib
vtknetcdfcpp-8.1-gd.lib
vtkoggtheora-8.1-gd.lib
vtkParallelCore-8.1-gd.lib
vtkpng-8.1-gd.lib
vtkproj4-8.1-gd.lib
vtkRenderingAnnotation-8.1-gd.lib
vtkRenderingContext2D-8.1-gd.lib
vtkRenderingContextOpenGL-8.1-gd.lib
vtkRenderingCore-8.1-gd.lib
vtkRenderingFreeType-8.1-gd.lib
vtkRenderingGL2PS-8.1-gd.lib
vtkRenderingImage-8.1-gd.lib
vtkRenderingLabel-8.1-gd.lib
vtkRenderingLIC-8.1-gd.lib
vtkRenderingLOD-8.1-gd.lib
vtkRenderingOpenGL-8.1-gd.lib
vtkRenderingVolume-8.1-gd.lib
vtkRenderingVolumeOpenGL-8.1-gd.lib
vtksqlite-8.1-gd.lib
vtksys-8.1-gd.lib
vtktiff-8.1-gd.lib
vtkverdict-8.1-gd.lib
vtkViewsContext2D-8.1-gd.lib
vtkViewsCore-8.1-gd.lib
vtkViewsInfovis-8.1-gd.lib
vtkzlib-8.1-gd.lib

(10)到此,點雲開發環境就配置好啦,可以參考網上使用CloudViewer進行可視化的代碼,如下:
在這裏插入圖片描述
具體代碼:
// ConsoleApplication1.cpp : 此文件包含 “main” 函數。程序執行將在此處開始並結束。

#include “test1.h”
//程序中處理有關錯誤信息
#if (_MSC_VER >= 1915)
#define no_init_all deprecated
#endif
#pragma warning(disable: 4996)

#include<pcl/visualization/cloud_viewer.h> //類CloudViewer頭文件聲明
#include//標準C++庫中的輸入輸出類相關頭文件
#include<pcl/io/io.h>//io相關頭文件聲明
#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::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ);
//加載點雲文件
char strfilepath[256] = “rabbit.pcd”;
//判斷輸入的點雲文件是否有效
if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) {
cout << “error input!” << endl;
return -1;
}
//輸出點的數量
cout << cloud->points.size() << endl;
//創建viewer對象
pcl::visualization::CloudViewer viewer(“Cloud Viewer”);
//調用庫內的渲染函數,同步顯示
viewer.showCloud(cloud);
//調用回調函數,註冊一次,可視化對象
viewer.runOnVisualizationThreadOnce(viewerOneOff);
//保證操作系統暫停當前進程的執行,即凍結屏幕,留下展示
system(“pause”);
return 0;
}

點擊運行,可以得到三維的兔子圖像:
在這裏插入圖片描述

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