C++ 点云最小生成树算法实现及可视化
这段代码实现了最小生成树算法,并将结果可视化。\n\n首先,包含了一些必要的头文件,包括点云处理和可视化的库。\n\n接下来,定义了一个边的结构体,包括边的起点、终点和权重。\n\n然后,定义了一个比较函数cmp,用于对边按权重进行排序。\n\n接着,定义了两个辅助函数find和unionSet,用于查找和合并集合。\n\n然后,定义了读取点云和写入点云的函数。\n\n在main函数中,首先调用readPointCloud函数读取点云数据。\n\n然后,根据点云中的点计算所有点之间的距离,并将边存储在edges向量中。\n\n接着,对边按权重进行排序。\n\n然后,创建一个大小和点云一样的parent向量,并初始化为-1。\n\n接着,创建一个空的mst向量,用于存储最小生成树的边。\n\n然后,循环遍历所有的边,直到mst的大小等于点云大小减1。在循环中,查找边的起点和终点所在的集合,并判断是否需要合并集合。\n\n接下来,创建一个新的点云cloud_mst,用于存储最小生成树中的点。\n\n然后,根据mst中的边,将边的起点和终点加入cloud_mst中。\n\n接下来,创建一个线段容器lines,并将最小生成树中的边加入容器。\n\n最后,创建一个可视化对象viewer,设置窗口标题为"Minimum Spanning Tree",并将点云数据加入可视化对象中。\n\n然后,按照线段容器中的点的顺序依次添加线段。\n\n最后,调用viewer.spin()函数进入可视化循环,显示结果。\n\n整个代码的功能是读取一个点云文件,计算最小生成树,并将结果可视化显示。
原文地址: https://www.cveoy.top/t/topic/pnzF 著作权归作者所有。请勿转载和采集!