C++ 获取平面的角点
基于本教程: 我已经按照教程中的说明分割了我的平面C++ 获取平面的角点,c++,point-cloud-library,point-clouds,C++,Point Cloud Library,Point Clouds,基于本教程: 我已经按照教程中的说明分割了我的平面 pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients); pcl::PointIndices::Ptr inliers (new pcl::PointIndices); // Create the segmentation object pcl::SACSegmentation<pcl::PointXYZ> seg; // Option
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::modelcortifiers::Ptr系数(新的pcl::modelcortifiers);
pcl::PointIndexes::Ptr内联(新的pcl::PointIndexes);//创建分割对象
pcl::SAC分段seg;//可选的
seg.setoptimize系数(真);//强制性的
seg.setModelType(pcl::SACMODEL_平面);
seg.setMethodType(pcl::SAC_RANSAC);
seg.setDistanceThreshold(0.01);
seg.setInputCloud(云);
分段(*内联线,*系数);
如果(inliers->index.size()==0){
PCL_错误(“无法估计给定数据集的平面模型”);
返回(-1);
}
当你在点云中分割一个平面时,你会发现点位于同一平面上;输出不一定是矩形或正方形;因此,这些角落可能根本不存在
你可以做的是创建一个多边形,但是在点的外部点上迭代,然后构建一个多边形。看一看关于如何从平面上的一组点构建船体的
之后,您可以根据上一个和下一个向量估计多边形每个点的角度。注意角度大于180°的凹多边形 直到最后一段我都能理解答案。上一个和下一个向量是什么意思?我的想法是检查多边形中点之间的角度,对吗?你说的是什么方法?表示已分割平面的二维多边形是一个点列表(位于二维平面上)。迭代它们并计算两个向量之间的角度。根据角度,您可以找到“角”。