点云库和While循环

时间:2018-11-12 10:51:08

标签: pointers while-loop save point-cloud-library

我是C ++和PCL的新手。我希望将指针的值保存在while循环中,并希望显示保存的指针。这是我的代码的一部分。请指导每次循环运行时如何在数组中保存“ coefficients-> values [0],coefficients-> values [1],coefficients-> values [2],coefficients-> values [3]”的值。 / p>

// While 20% of the original cloud is still there
  while (cloud_filtered->points.size () > 0.20 * nr_points)
  {
    // Segment the largest planar component from the remaining cloud
    seg.setInputCloud (cloud_filtered);
    seg.segment (*inliers, *coefficients);

    if (inliers->indices.size () == 0)
        {
        std::cerr << "Could not estimate a planar model for the given dataset." << std::endl;
        break;
        }
    std::cerr << "Model coefficients: " << coefficients->values[0] << " " 
                                        << coefficients->values[1] << " "
                                        << coefficients->values[2] << " "                                   
                                        << coefficients->values[3] << std::endl;
   }

1 个答案:

答案 0 :(得分:2)

我假设您正在遵循this示例代码,因为您在问题中添加的代码段几乎相同。如果是这种情况,那么您可以在while循环之前声明一个std::vector<pcl::ModelCoefficients>,然后像这样将系数压入

std::vector<pcl::ModelCoefficients> coeffs;
while(...){
    ...
    coeffs.push_back(*coefficients);
}

还请查看pcl::ModelCoefficients here的文档,该文档只不过是标头和浮点向量。请注意,在这种情况下,将coeffs定义为共享指针的向量并将指针推入系数将不起作用,因为先前推入的系数将被seg.segment(*inliers, *coefficients);覆盖。