Рисование нескольких линий в 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
Подпись:
bool addLine (const pcl::ModelCoefficients &coefficients, const std::string &id="line", int viewport=0)
Здесь вы можете видеть, что когда вы добавляете строку, ей автоматически присваивается идентификатор строки "line
Msgstr "Это хорошо, если вы добавляете только одну строку, но для нескольких строк вам нужно дать уникальный идентификатор для каждой строки.
например
std::stringstream ss;
ss<<"line"<<j;
viewer.addLine(model_coefficients,ss.str());