PCL 聚类可视化:使用 PCLVisualizer 展示聚类结果
使用可视化工具 pcl::visualization::PCLVisualizer 来将聚类结果可视化。下面是完善后的代码:\n\ncpp\n#include <pcl\/visualization\/pcl_visualizer.h>\n\n// 创建一个 PCLVisualizer 对象\npcl\:\:visualization\:\:PCLVisualizer\:\:Ptr viewer(new pcl\:\:visualization\:\:PCLVisualizer("Cluster viewer"));\n\n// 设置背景颜色为黑色\nviewer->setBackgroundColor(0, 0, 0);\n\n// 设置点云颜色为绿色\npcl\:\:visualization\:\:PointCloudColorHandlerCustom<pcl\:\:PointXYZ> color_handler(cloud3, 0, 255, 0);\n\n// 将点云添加到可视化窗口中\nviewer->addPointCloud(cloud3, color_handler, "cloud");\n\n// 遍历聚类结果\nfor (std\:\:vector<pcl\:\:PointIndices>::const_iterator it = cluster_indices.begin(); it != cluster_indices.end(); ++it) \n{\n // 创建一个新的点云对象,用于存储当前聚类的点云数据\npcl\:\:PointCloud<pcl\:\:PointXYZ>::Ptr cluster(new pcl\:\:PointCloud<pcl\:\:PointXYZ>);\n \n // 将当前聚类的点云数据保存到 cluster 中\n for (std\:\:vector<int>::const_iterator pit = it->indices.begin(); pit != it->indices.end(); ++pit)\n cluster->push_back((*cloud3)[*pit]);\n \n // 生成一个随机的颜色\n unsigned char r = rand() % 256;\n unsigned char g = rand() % 256;\n unsigned char b = rand() % 256;\npcl\:\:visualization\:\:PointCloudColorHandlerCustom<pcl\:\:PointXYZ> cluster_color_handler(cluster, r, g, b);\n \n // 将当前聚类的点云添加到可视化窗口中\n std\:\:string cluster_id = "cluster_" + std\:\:to_string(std\:\:distance(cluster_indices.begin(), it));\n viewer->addPointCloud(cluster, cluster_color_handler, cluster_id);\n \n // 设置点云大小为 1\n viewer->setPointCloudRenderingProperties(pcl\:\:visualization\:\:PCL_VISUALIZER_POINT_SIZE, 1, cluster_id);\n}\n\n// 显示可视化窗口\nwhile (!viewer->wasStopped())\n{\n viewer->spinOnce();\n}\n\n\n这段代码使用 PCLVisualizer 对象创建了一个可视化窗口,并将原始点云和每个聚类的点云都添加到了可视化窗口中。每个聚类的点云使用不同的颜色进行区分。最后通过调用 viewer->spinOnce() 来显示可视化窗口,直到窗口被关闭。
原文地址: https://www.cveoy.top/t/topic/pIpU 著作权归作者所有。请勿转载和采集!