基于本教程:
http://pointclouds.org/documentation/tutorials/planar_segmentation.php

我按照教程中的说明对飞机进行了细分

pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients);
pcl::PointIndices::Ptr inliers (new pcl::PointIndices);   // Create the segmentation object
pcl::SACSegmentation<pcl::PointXYZ> seg;   // Optional
seg.setOptimizeCoefficients (true);   // Mandatory
seg.setModelType(pcl::SACMODEL_PLANE);
seg.setMethodType (pcl::SAC_RANSAC);
seg.setDistanceThreshold (0.01);
seg.setInputCloud (cloud);
seg.segment (*inliers, *coefficients);

if (inliers->indices.size() == 0) {
   PCL_ERROR ("Could not estimate a planar model for the given dataset.");
   return (-1);
}

std::cerr << "Model coefficients: " << coefficients->values[0] << " "
                      << coefficients->values[1] << " "
                      << coefficients->values[2] << " "
                      << coefficients->values[3] << std::endl;

现在,我想知道是否有办法获得拐角点。还是PCL中提供了这种方法?

如果没有,我该如何解决这个问题。

最佳答案

在点云中分割平面时,会发现位于同一平面上的点。输出不一定是矩形或正方形;因此角落可能根本不存在。

您可以做的是创建一个多边形,然后迭代这些点的外部点以构建一个多边形。看一看2D hull PCL tutorial,了解如何从飞机上的一组点构建船体。

之后,由于有了上一个和下一个 vector ,您可以估算多边形每个点的 Angular 。当心凹角大于180°的多边形!

10-04 12:35