从开始配置点云加上前段时间的论文开题,已经花费了我快一个月的时间,都说万事开头难!是真的难,我甚至想过换方向~开个玩笑,虽然没有对点云了解多少,但感觉这个方向还是很有发展前途的。下面说一下我个人的点云配置。
之前尝试过VS的各种版本,VS2017、VS2015与PCL点云库各种版本的搭配,最后在VS2013和PCL1.8.0下搭建环境成功,在此期间看过网上各种的配置博客,我都没有成功过,问了一些搭建成功的学姐和学长们,他们都说和VS版本没有关系,额,或许真的是要看人品吧,下面我介绍一下VS2013与PCL1.8.0的环境搭建过程。
这是一个微信公众号,学弟推荐给我的,亲测好用,下了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:配置电脑环境
电脑——属性——高级系统设置——高级——环境变量
就是这样,当我们安装好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文件的目录。
显示如下,一开始可能会慢一点,只要编译通过了就好好等待吧~~
终于完成了第一步,下面开始搞搞论文了,加油!!