【发布时间】:2018-02-13 17:03:09
【问题描述】:
我正在尝试在点云上实现 K-means 聚类算法。但是,我不确定如何将数据导入为 pcl 的 k-means 成员的输入。该文档已被证明有点令人困惑。 到目前为止,我已将 pcd 导入点云并将其转换为向量,但我不知道如何从这里开始并直接初始化 Kmeans。
int main (int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in(new pcl::PointCloud<pcl::PointXYZ>);
std::vector<pcl::PointXYZ> cloud;
pcl::io::loadPCDFile ("Scene02 - Cloud.pcd", *cloud_in);
for (int i = 0; i < cloud_in->size(); i++)
{
cloud[i] = cloud_in->points[i];
}
pcl::Kmeans real(300000, 3);
real.setInputData(cloud);
}
我意识到语法是错误的,但我也不确定什么是正确的。
【问题讨论】:
-
如果您希望其他人发布代码/专门帮助您。请通过显示您当前的代码并说明您尝试过但没有成功的方法来展示您迄今为止的工作。
-
这比我想象的要混乱得多。 (我对 pcl 有相当多的经验,而且这个函数在 imo 上写得不好)谢谢你的这个问题,因为我认为其他人会觉得它很有用!
-
确实!从表面上看,这个函数似乎承担了在 PCL 中实现 kmeans 算法的所有复杂性,但在没有适当教程的情况下执行它会让人筋疲力尽。我希望它在未来对其他人有所帮助!
标签: c++ k-means point-cloud-library