VS 下配置PCL

适用情况:

1、VS2015 配置 PCL1.8.1
2、VS2019 配置 PCL1.12.0

准备工作:

1、VS2015安装包(默认已经安装好)、VS2019安装包

2、PCL AllInOne软件下载(地址:https://github.com/PointCloudLibrary/pcl/releases

3、参考文档:pcl1.8.0+vs2015配置安装【小白入门与遇到过的问题解决】_annabelle1130的博客-CSDN博客

VS2015配置PCL1.8.0总结_fellen is not coding-CSDN博客

VS2019+PCL1.12.0的安装与使用_HarryXu的博客-CSDN博客(解决库文件多的处理办法)

win10系统下 VS2019点云库PCL1.12.0的安装与配置_Nelson_Leo的博客-CSDN博客

注意事项:

        由于PCL1.9.1是用VS2017编译的,所以使用VS2015时库会出现不兼容问题,本人在测试多次之后,使用了1.8.1的版本,

该版本是用VS2015编译的。如何使用VS2015配置PCL1.9.1,应该要用CMake编译库,有兴趣的童鞋可以试一下。

安装过程:

1、选择Add PCL to the system PATH for all users

2、选择安装地址,可以选择默认,也可以自己设定,需要注意如果修改了地址之后

PCL1.12.10版本中 OpenNI2的地址还是会默认在 C 盘“C:\Program Files\OpenNI2”;

不需要再重新安装了,直接将新安装的路径链接到这个地址就可以了。

3、安装即可

4、安装的过程会弹出OpenNI2的安装界面,需要重新选择一下路径:要选择PCL安装路径下的 3rdParty\OpenNI2 位置

中间会弹出一个小的对话框:PrimeSense(一家开发三维的公司),点击同意安装即可

5、等待安装完成即可

6、配置过程

Step1:附加包含目录

step2:附加库目录

step3:lib加入,具体的见文末

step4:编译运行测试即可

出现的问题:

1、编码问题

解决方法:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失_个蛋的博客-CSDN博客_该文件包含不能在当前代码页936中表示的字符

参考这个文档可以解决第一个问题,使用的是高级保存的方法。

2、error C4996

_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING

3、各种lib找不见的问题

这个问题解决办法就是直接进行安装文件的目录,查找找不到的lib是不是在这个文件中,因为PCL各个版本的lib会有一些差别,

所以配置的过程中一定要注意。下面给出1.8.1的库文件,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_stereo_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib
libboost_atomic-vc140-mt-gd-1_64.lib
libboost_bzip2-vc140-mt-gd-1_64.lib
libboost_chrono-vc140-mt-gd-1_64.lib
libboost_container-vc140-mt-gd-1_64.lib
libboost_context-vc140-mt-gd-1_64.lib
libboost_coroutine-vc140-mt-gd-1_64.lib
libboost_date_time-vc140-mt-gd-1_64.lib
libboost_exception-vc140-mt-gd-1_64.lib
libboost_fiber-vc140-mt-gd-1_64.lib
libboost_filesystem-vc140-mt-gd-1_64.lib
libboost_graph_parallel-vc140-mt-gd-1_64.lib
libboost_graph-vc140-mt-gd-1_64.lib
libboost_iostreams-vc140-mt-gd-1_64.lib
libboost_locale-vc140-mt-gd-1_64.lib
libboost_log_setup-vc140-mt-gd-1_64.lib
libboost_log-vc140-mt-gd-1_64.lib
libboost_math_c99f-vc140-mt-gd-1_64.lib
libboost_math_c99l-vc140-mt-gd-1_64.lib
libboost_math_c99-vc140-mt-gd-1_64.lib
libboost_math_tr1f-vc140-mt-gd-1_64.lib
libboost_math_tr1l-vc140-mt-gd-1_64.lib
libboost_math_tr1-vc140-mt-gd-1_64.lib
libboost_mpi-vc140-mt-gd-1_64.lib
libboost_numpy-vc140-mt-gd-1_64.lib
libboost_numpy3-vc140-mt-gd-1_64.lib
libboost_prg_exec_monitor-vc140-mt-gd-1_64.lib
libboost_program_options-vc140-mt-gd-1_64.lib
libboost_python3-vc140-mt-gd-1_64.lib
libboost_random-vc140-mt-gd-1_64.lib
libboost_regex-vc140-mt-gd-1_64.lib
libboost_serialization-vc140-mt-gd-1_64.lib
libboost_signals-vc140-mt-gd-1_64.lib
libboost_system-vc140-mt-gd-1_64.lib
libboost_test_exec_monitor-vc140-mt-gd-1_64.lib
libboost_thread-vc140-mt-gd-1_64.lib
libboost_timer-vc140-mt-gd-1_64.lib
libboost_type_erasure-vc140-mt-gd-1_64.lib
libboost_unit_test_framework-vc140-mt-gd-1_64.lib
libboost_wave-vc140-mt-gd-1_64.lib
libboost_wserialization-vc140-mt-gd-1_64.lib
libboost_zlib-vc140-mt-gd-1_64.lib
qhull_d.lib
qhull_p_d.lib
qhull_r_d.lib
qhullcpp_d.lib
qhullstatic_d.lib
qhullstatic_r_d.lib
vtkalglib-8.0-gd.lib

vtkChartsCore-8.0-gd.lib

vtkCommonColor-8.0-gd.lib

vtkCommonComputationalGeometry-8.0-gd.lib

vtkCommonCore-8.0-gd.lib

vtkCommonDataModel-8.0-gd.lib

vtkCommonExecutionModel-8.0-gd.lib

vtkCommonMath-8.0-gd.lib

vtkCommonMisc-8.0-gd.lib

vtkCommonSystem-8.0-gd.lib

vtkCommonTransforms-8.0-gd.lib

vtkDICOMParser-8.0-gd.lib

vtkDomainsChemistry-8.0-gd.lib
vtkexoIIc-8.0-gd.lib

vtkexpat-8.0-gd.lib
vtkFiltersAMR-8.0-gd.lib

vtkFiltersCore-8.0-gd.lib
vtkFiltersExtraction-8.0-gd.lib

vtkFiltersFlowPaths-8.0-gd.lib
vtkFiltersGeneral-8.0-gd.lib
vtkFiltersGeneric-8.0-gd.lib

vtkFiltersGeometry-8.0-gd.lib
vtkFiltersHybrid-8.0-gd.lib

vtkFiltersHyperTree-8.0-gd.lib

vtkFiltersImaging-8.0-gd.lib

vtkFiltersModeling-8.0-gd.lib
vtkFiltersParallel-8.0-gd.lib

vtkFiltersParallelImaging-8.0-gd.lib

vtkFiltersProgrammable-8.0-gd.lib
vtkFiltersSelection-8.0-gd.lib

vtkFiltersSMP-8.0-gd.lib
vtkFiltersSources-8.0-gd.lib

vtkFiltersStatistics-8.0-gd.lib
vtkFiltersTexture-8.0-gd.lib
vtkFiltersVerdict-8.0-gd.lib

vtkfreetype-8.0-gd.lib

vtkGeovisCore-8.0-gd.lib

vtkhdf5-8.0-gd.lib

vtkhdf5_hl-8.0-gd.lib

vtkImagingColor-8.0-gd.lib
vtkImagingCore-8.0-gd.lib

vtkImagingFourier-8.0-gd.lib

vtkImagingGeneral-8.0-gd.lib
vtkImagingHybrid-8.0-gd.lib

vtkImagingMath-8.0-gd.lib
vtkImagingMorphological-8.0-gd.lib

vtkImagingSources-8.0-gd.lib
vtkImagingStatistics-8.0-gd.lib

vtkImagingStencil-8.0-gd.lib

vtkInfovisCore-8.0-gd.lib

vtkInfovisLayout-8.0-gd.lib

vtkInteractionImage-8.0-gd.lib
vtkInteractionStyle-8.0-gd.lib

vtkInteractionWidgets-8.0-gd.lib

vtkIOAMR-8.0-gd.lib

vtkIOCore-8.0-gd.lib

vtkIOEnSight-8.0-gd.lib

vtkIOExodus-8.0-gd.lib
vtkIOExport-8.0-gd.lib

vtkIOGeometry-8.0-gd.lib
vtkIOImage-8.0-gd.lib
vtkIOImport-8.0-gd.lib

vtkIOInfovis-8.0-gd.lib
vtkIOLegacy-8.0-gd.lib

vtkIOLSDyna-8.0-gd.lib

vtkIOMINC-8.0-gd.lib

vtkIOMovie-8.0-gd.lib

vtkIONetCDF-8.0-gd.lib
vtkIOParallel-8.0-gd.lib

vtkIOPLY-8.0-gd.lib

vtkIOSQL-8.0-gd.lib

vtkIOVideo-8.0-gd.lib
vtkIOXML-8.0-gd.lib

vtkIOXMLParser-8.0-gd.lib
vtkjpeg-8.0-gd.lib

vtkjsoncpp-8.0-gd.lib

vtklibxml2-8.0-gd.lib

vtkmetaio-8.0-gd.lib
vtkNetCDF-8.0-gd.lib

vtknetcdf_c++-gd.lib
vtkoggtheora-8.0-gd.lib

vtkParallelCore-8.0-gd.lib

vtkpng-8.0-gd.lib
vtkproj4-8.0-gd.lib

vtkRenderingAnnotation-8.0-gd.lib

vtkRenderingContext2D-8.0-gd.lib
vtkRenderingCore-8.0-gd.lib

vtkRenderingFreeType-8.0-gd.lib

vtkRenderingImage-8.0-gd.lib
vtkRenderingLabel-8.0-gd.lib

vtkRenderingLOD-8.0-gd.lib

vtkRenderingVolume-8.0-gd.lib

vtksqlite-8.0-gd.lib
vtksys-8.0-gd.lib
vtktiff-8.0-gd.lib

vtkverdict-8.0-gd.lib

vtkViewsContext2D-8.0-gd.lib
vtkViewsCore-8.0-gd.lib

vtkViewsInfovis-8.0-gd.lib

vtkzlib-8.0-gd.lib
flann.lib
flann_s.lib
flann-gd.lib
flann_cpp_s.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
OpenNI2.lib

4、最终编译成功效果(程序是从网上找的一段)

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/ModelCoefficients.h>
#include <pcl/filters/project_inliers.h>




int main(int argc, char** argv)
{
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_projected(new pcl::PointCloud<pcl::PointXYZ>);

	// Fill in the cloud data
	cloud->width = 5;
	cloud->height = 1;
	cloud->points.resize(cloud->width * cloud->height);

	for (size_t i = 0; i < cloud->points.size(); ++i)
	{
		cloud->points[i].x = 1024 * rand() / (RAND_MAX + 1.0f);
		cloud->points[i].y = 1024 * rand() / (RAND_MAX + 1.0f);
		cloud->points[i].z = 1024 * rand() / (RAND_MAX + 1.0f);
	}

	std::cerr << "Cloud before projection: " << std::endl;
	for (size_t i = 0; i < cloud->points.size(); ++i)
		std::cerr << "    " << cloud->points[i].x << " "
		<< cloud->points[i].y << " "
		<< cloud->points[i].z << std::endl;

	// Create a set of planar coefficients with X=Y=0,Z=1
	pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients());
	coefficients->values.resize(4);
	coefficients->values[0] = coefficients->values[1] = 0;
	coefficients->values[2] = 1.0;
	coefficients->values[3] = 0;

	// Create the filtering object
	pcl::ProjectInliers<pcl::PointXYZ> proj;
	proj.setModelType(pcl::SACMODEL_PLANE);
	proj.setInputCloud(cloud);
	proj.setModelCoefficients(coefficients);
	proj.filter(*cloud_projected);

	std::cerr << "Cloud after projection: " << std::endl;

	for (size_t i = 0; i < cloud_projected->points.size(); ++i)
		std::cerr << "    " << cloud_projected->points[i].x << " "
		<< cloud_projected->points[i].y << " "
		<< cloud_projected->points[i].z << std::endl;

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值