解释代码pclPointCloudpclPointXYZPtr yq = yennj; pclPointXYZ centroid1; centroid1x = cloudsi-pointsjx; centroid1y = cloudsi-pointsjy; centroid1z = cloudsi-pointsjz; pclPointCloudpclPointXYZPtr cl
这段代码的功能是从一个点云中找到与给定点最近的点,并提取出该点的聚类。
首先,定义了一个名为yq的指向pcl::PointCloudpcl::PointXYZ类型的智能指针。然后,创建了一个名为centroid1的pcl::PointXYZ类型的对象,并将其x、y、z坐标设置为clouds[i]->points[j]的对应坐标。
接下来,创建了一个名为kdtree的pcl::KdTreeFLANNpcl::PointXYZ类型的对象,并将其输入点云设置为cloud3。然后,定义了两个vector,pointIdxNKNSearch用于存储最近点的索引,pointNKNSquaredDistance用于存储最近点与给定点的距离的平方。调用kdtree的nearestKSearch方法,找到最近的点的索引,并将结果存储在pointIdxNKNSearch和pointNKNSquaredDistance中。
然后,创建了一个pcl::ExtractIndicespcl::PointXYZ类型的对象extract,并将其输入点云设置为cloud3。接着,创建了一个名为inliers的pcl::PointIndices::Ptr类型的智能指针,并将最近点的索引添加到inliers中。
然后,调用extract的setIndices方法,将inliers设置为提取的索引。接着,将extract的setNegative设置为false,表示只提取inliers中的点,并调用filter方法,将提取的结果存储在yq中。
最后,通过循环遍历yq中的每个点,并打印出其坐标。
原文地址: https://www.cveoy.top/t/topic/hWox 著作权归作者所有。请勿转载和采集!