Библиотека облака точек и цикл Loop - PullRequest
0 голосов
/ 12 ноября 2018

Я новичок в C ++ и PCL. Я хочу сохранить значения указателя в цикле while и хочу отобразить сохраненный. Вот часть моего кода. Пожалуйста, объясните, как сохранять значения «коэффициенты-> значения [0], коэффициенты-> значения [1], коэффициенты-> значения [2], коэффициенты-> значения [3]» в массиве каждый раз, когда выполняется цикл.

// 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 голосов
/ 15 ноября 2018

Я предполагаю, что вы следуете этому примеру кода, поскольку фрагмент, который вы добавили в своем вопросе, почти такой же.Если это так, то вы можете объявить std::vector<pcl::ModelCoefficients> непосредственно перед циклом while и вставить коэффициенты в него, например

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

Также посмотрите документацию для pcl::ModelCoefficients здесь который является ничем иным, как заголовком и вектором с плавающей точкой.Обратите внимание, что определение coeffs в качестве вектора общих указателей и перемещение указателей на коэффициенты в этом случае не сработает, поскольку ранее помещенные коэффициенты будут перезаписаны на seg.segment(*inliers, *coefficients);.

...