1. 问题描述
pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> n;
pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>); // 建立kdtree来进行近邻点集搜索
pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>); // 为kdtree添加点运数据
tree->setInputCloud(cloud);
n.setInputCloud(cloud);
n.setSearchMethod(tree); // 点云法向计算时,需要所搜的近邻点大小
n.setKSearch (20);
// 开始进行法向计算
n.compute(*normals);
在使用 PCL 库计算点云法向量时,出现以下错误:
Assertion failed: point_representation_->isValid (point) && " nvalid (NaN, Inf) point coordinates given to nearestKSearch!"
说明点云数据中存在无效点,需要去除这些 NaN 点
2. removeNaNFromPointCloud() 去除无效点
引入 pcl/filters/filter.h 头文件,调用 filter.h 中的 removeNaNFromPointCloud() 函数去除NaN 点:
# include <pcl/filters/filter.h>
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_out

最低0.47元/天 解锁文章
655





