基于本教程:
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°的多边形!