同时显示上下两层凸包特征的可视化程序

数据类型
std::vector::Ptr>  hulls_k_upper
std::vector::Ptr>  hulls_k_lower
std::vector::Ptr>  hulls_underk_upper
std::vector::Ptr>  hulls_underk_lower
// 创建一个 PCLVisualizer 对象
pcl::visualization::PCLVisualizer viewer("Convex Hull Visualization");

int hull_id = 0;
// 为 hulls_k_upper 中的每个凸包添加多边形
for (const auto& hull : hulls_k_upper) {
    std::string poly_id = "hull_k_upper" + std::to_string(hull_id);
    viewer.addPolygon(hull, 255, 0, 0, poly_id); // 红色
    viewer.setShapeRenderingProperties(pcl::visualization::PCL_VISUALIZER_LINE_WIDTH, 2, poly_id);
    hull_id++;
}

// 为 hulls_k_lower 中的每个凸包添加多边形
for (const auto& hull : hulls_k_lower) {
    std::string poly_id = "hull_k_lower" + std::to_string(hull_id);
    viewer.addPolygon(hull, 0, 255, 0, poly_id); // 绿色
    viewer.setShapeRenderingProperties(pcl::visualization::PCL_VISUALIZER_LINE_WIDTH, 2, poly_id);
    hull_id++;
}

// 为 hulls_underk_upper 中的每个凸包添加多边形
for (const auto& hull : hulls_underk_upper) {
    std::string poly_id = "hull_underk_upper" + std::to_string(hull_id);
    viewer.addPolygon(hull, 0, 0, 255, poly_id); // 蓝色
    viewer.setShapeRenderingProperties(pcl::visualization::PCL_VISUALIZER_LINE_WIDTH, 2, poly_id);
    hull_id++;
}

// 为 hulls_underk_lower 中的每个凸包添加多边形
for (const auto& hull : hulls_underk_lower) {
    std::string poly_id = "hull_underk_lower" + std::to_string(hull_id);
    viewer.addPolygon(hull, 255, 255, 0, poly_id); // 黄色
    viewer.setShapeRenderingProperties(pcl::visualization::PCL_VISUALIZER_LINE_WIDTH, 2, poly_id);
    hull_id++;
}

// 设置视窗的背景颜色
viewer.setBackgroundColor(0, 0, 0);

// 循环直到视窗关闭
while (!viewer.wasStopped()) {
    viewer.spinOnce();
}

同时显示上下两层凸包特征的可视化程序_第1张图片

选择凸包的可视化.

// 创建一个 PCLVisualizer 对象
                pcl::visualization::PCLVisualizer viewer2("Convex Hull Visualization");

                int select_hull_id = 2;

// 为 select_2_hulls_k 中的每个凸包添加多边形
                for (const auto& hull : select_2_hulls_k) {
                    std::string poly_id = "select_hull_k_" + std::to_string(select_hull_id);
                    viewer2.addPolygon(hull, 255, 0, 255, poly_id); // 红色
                    viewer2.setShapeRenderingProperties(pcl::visualization::PCL_VISUALIZER_LINE_WIDTH, 2, poly_id);
                    select_hull_id++;
                }

// 为 select_2_hulls_underk 中的每个凸包添加多边形
                for (const auto& hull : select_2_hulls_underk) {
                    std::string poly_id = "select_hull_underk_" + std::to_string(select_hull_id);
                    viewer2.addPolygon(hull, 0, 255, 255, poly_id); // 绿色
                    viewer2.setShapeRenderingProperties(pcl::visualization::PCL_VISUALIZER_LINE_WIDTH, 2, poly_id);
                    select_hull_id++;
                }

// 设置视窗的背景颜色
                viewer2.setBackgroundColor(0, 0, 0);

// 循环直到视窗关闭
                while (!viewer2.wasStopped()) {
                    viewer2.spinOnce();
                }

同时显示上下两层凸包特征的可视化程序_第2张图片

你可能感兴趣的:(PCL,c++,PointXYZRGB)