PCL配置以及简单的点云显示

       从开始配置点云加上前段时间的论文开题,已经花费了我快一个月的时间,都说万事开头难!是真的难,我甚至想过换方向~开个玩笑,虽然没有对点云了解多少,但感觉这个方向还是很有发展前途的。下面说一下我个人的点云配置。

       之前尝试过VS的各种版本,VS2017、VS2015与PCL点云库各种版本的搭配,最后在VS2013和PCL1.8.0下搭建环境成功,在此期间看过网上各种的配置博客,我都没有成功过,问了一些搭建成功的学姐和学长们,他们都说和VS版本没有关系,额,或许真的是要看人品吧,下面我介绍一下VS2013与PCL1.8.0的环境搭建过程。

VS2013版本以及各种版本的下载与安装

这是一个微信公众号,学弟推荐给我的,亲测好用,下了MATLAB 2018以及各种软件,推荐给大家。

PCL 1.8.0 密码: t389  

里面不仅有PCL的版本,还有很多相关代码,很全的,当然这是其他大神分享的。

在配置之前要说一下,要看对应的VS的版本,可以少走弯路,我下载的版本应该是32位的,所以安装PCL的版本也应该是32位的,虽然电脑是64位的,但是一定要和VS的版本对应好!一定要!

下面开始紧张刺激的安装配置环节啦!!!

STEP 1:安装PCL-1.8.0-AllInOne-msvc2013-win32 安装,一直点下一步就好,但一半的时候,会弹出安装OPENNI的框框,把它安装在PCL安装目录下3rdParty\OpenNI2里,安装成功后,把压缩包PCL-1.8.0-pdb-msvc2013-win32解压后放到PCL1.8.0文件下的lib中。到这里可以稍微开心一小下下!

STEP 2:配置电脑环境

电脑——属性——高级系统设置——高级——环境变量

扫描二维码关注公众号,回复: 3873730 查看本文章

就是这样,当我们安装好PCL的时候,系统变量就会出现

是的,有的时候会惊讶的发现,并没有这些,咋办呢?自己添加吧!哈哈 ,咱不怕麻烦,只要是最后成功就可以了。

在Path中再手动添加变量,当然有的童鞋打开不是这样的方框框,一条一条的,他们是都挤在一行中,很难看!不容易添加,那是因为你变量的第一个是以%开头的,不要问我咋知道,我也出现过,百度解决的,这里很贴心的为大家考虑到了。

这四个就可以了,有的博客上可能比这个多一点,你要是不放心可以都添上,没啥关系。

STEP 3:VS中的项目工程属性的配置

先新建项目,Win32控制台应用程序(不要勾中安全开发生命周期SDL检查),然后在属性管理器中Debug|Win32中新建项目属性表,自己取个名字,以后方面自己添加。

通用属性下的VC++目录——包含目录添加以下(每个人前面的路径不同,后面是一样的,自己注意修改啊):

C:\Program Files (x86)\PCL 1.8.0\include\pcl-1.8

C:\Program Files (x86)\PCL 1.8.0\3rdParty\Boost\include\boost-1_59

C:\Program Files (x86)\PCL 1.8.0\3rdParty\Qhull\include

C:\Program Files (x86)\PCL 1.8.0\3rdParty\FLANN\include

C:\Program Files (x86)\PCL 1.8.0\3rdParty\VTK\include\vtk-7.0

C:\Program Files (x86)\PCL 1.8.0\3rdParty\Eigen\eigen3

库目录下添加:

C:\Program Files (x86)\PCL 1.8.0\3rdParty\VTK\lib

C:\Program Files (x86)\PCL 1.8.0\3rdParty\FLANN\lib

C:\Program Files (x86)\PCL 1.8.0\3rdParty\Qhull\lib

C:\Program Files (x86)\PCL 1.8.0\3rdParty\Boost\lib

C:\Program Files (x86)\PCL 1.8.0\lib

链接器——输入——附加依赖项中添加:

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
在最后编译的时候,VS中可能会出现找不到以上的某一个lib文件,那么解决的办法就是从附加依赖项把他删去就好了,我出现过这样的错误。

下面就是最后也是最重要的一步了,调试程序!


//添加头文件
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/cloud_viewer.h>

// typedef pcl::PointXYZ PointT;
typedef pcl::PointXYZRGBA PointT;

void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{
	// set background to black (R = 0, G = 0, B = 0)
	viewer.setBackgroundColor(0, 0, 0);
}

void viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
{
	// you can add something here, ex:  add text in viewer
}

//int main(int argc, char *argv[])
int main()
{
	pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>);

	// Load .pcd file from argv[1]

	int ret = pcl::io::loadPCDFile("C:\\Users\\15390\\Desktop\\C++\\test_pcd.pcd", *cloud);
	if (ret < 0) {
		PCL_ERROR("Couldn't read file %s\n", "teacup.pcd");
		return -1;
	}

	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...
	}

	//system("pause");
	return 0;
}

自己注意修改一下,pcd文件的目录。

显示如下,一开始可能会慢一点,只要编译通过了就好好等待吧~~

终于完成了第一步,下面开始搞搞论文了,加油!!

猜你喜欢

转载自blog.csdn.net/qinlele1994/article/details/83581047