Рисование нескольких линий в pcl с известными модельными коэффициентами

Я извлек сегменты из облака точек и и использовал pcl::SACSegmentation<pcl::PointXYZ> seg; чтобы соответствовать всем линиям одновременно. Все мои сегменты файлов хранятся в одной папке, и я могу читать их один за другим и рассчитывать их модельные коэффициенты индивидуально.

Лучший способ обойти эту проблему — через for петля, но viewer.addLine дает ошибки на второй итерации, говоря, что addLine уже использовался после рисования одной линии (RANSAC). Я использовал метод с сайта PCL http://pointclouds.org/documentation/tutorials/cylinder_segmentation.php определить коэффициенты всех моих сегментов. Согласно тому, что я узнал до сих пор, коэффициенты модели хранятся внутри.

Цель: нарисуйте все линии из коэффициентов модели одновременно, используя RANSAC, и добавьте их в визуализатор PCL.

Это фрагмент, который я использовал для загрузки всех файлов (пример)

std::stringstream ss;
ss << "./cloud_cluster_" << j << ".pcd";
reader.read<pcl::PointXYZ> (ss.str (), *cloud_cluster, false);
j++;

// snip

pcl::visualizer viewer ("Sample programme")
viewer.addCloud();
viewer.addLine(model_coefficients)

Ваша помощь будет оценена.

1

Решение

addLine Функция, которую вы используете, документирована в API здесь:
http://docs.pointclouds.org/trunk/classpcl_1_1visualization_1_1_p_c_l_visualizer.html#a5fd2b99b85da61df8b58980bdb6b0f41

Подпись:

bool addLine (const pcl::ModelCoefficients &coefficients, const std::string &id="line", int viewport=0)

Здесь вы можете увидеть, что когда вы добавляете строку, ей автоматически присваивается идентификатор строки «lineMsgstr «Это хорошо, если вы добавляете только одну строку, но для нескольких строк вам нужно дать уникальный идентификатор для каждой строки.

например

std::stringstream ss;
ss<<"line"<<j;
viewer.addLine(model_coefficients,ss.str());
1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector