基于本教程: 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中有这样的方法吗?
如果没有,我该如何解决这个问题。
答案 0 :(得分:1)
当您在点云中分割平面时,您会发现位于同一平面上的点;输出不一定是矩形或正方形;所以角落可能根本不存在。
你可以做的是创建一个多边形,但迭代点的外部点,构建一个多边形。看看2D hull PCL tutorial关于如何从一组平面上的点构建船体。
之后,您可以根据前一个和下一个向量估计多边形每个点的角度。注意角度大于180°的凹多边形!