gpt4 book ai didi

c++ - 使用已知模型系数在 pcl 中绘制多条线

转载 作者:行者123 更新时间:2023-11-30 05:40:02 29 4
gpt4 key购买 nike

我从点云中提取了片段并使用了 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)

我们将不胜感激。

最佳答案

您正在使用的 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)

在这里你可以看到,当你添加一行时,它会自动被赋予一个字符串id“line”。如果您只添加一行,这很好,但对于多行,您需要为每一行提供一个唯一的 ID。

例如

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

关于c++ - 使用已知模型系数在 pcl 中绘制多条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31947086/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com