得到一个平面的角点

Getting corner points of a plane

本文关键字:平面 一个      更新时间:2023-10-16

基于本教程: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船体PCL教程,了解如何从平面上的一组点构建船体。

之后,你可以估计多边形上每个点的角度,这要归功于前一个和下一个向量。小心角度大于180°的凹多边形!