PCL计算点云的法线

源代码

#include 
#include 
#include   //法线估计类头文件
#include 
#include 
#include 

int
main ()
 {
//打开点云代码
pcl::PointCloud::Ptr cloud (new pcl::PointCloud);
pcl::io::loadPCDFile ("model.pcd", *cloud);
//创建法线估计估计向量
pcl::NormalEstimation ne;
ne.setInputCloud (cloud);
//创建一个空的KdTree对象,并把它传递给法线估计向量
//基于给出的输入数据集,KdTree将被建立
pcl::search::KdTree::Ptr tree (new pcl::search::KdTree ());
ne.setSearchMethod (tree);
//存储输出数据
pcl::PointCloud::Ptr cloud_normals (new pcl::PointCloud);
//使用半径在查询点周围3厘米范围内的所有临近元素
ne.setRadiusSearch (0.03);
//计算特征值
ne.compute (*cloud_normals);
// cloud_normals->points.size ()应该与input cloud_downsampled->points.size ()有相同的尺寸
//可视化
pcl::visualization::PCLVisualizer viewer("PCL Viewer");
viewer.setBackgroundColor (0.0, 0.0, 0.0);
viewer.addPointCloudNormals(cloud, cloud_normals);

while (!viewer.wasStopped ())
{
     viewer.spinOnce ();
}

return 0;
}

实验结果

PCL计算点云的法线_第1张图片
原图像
PCL计算点云的法线_第2张图片
法线图

你可能感兴趣的:(PCL点云处理)