自定义的AlphaShape类来提取平面点云数据的边界点 open3d c++ 代码 平面点云边界提取算法
使用了自定义的AlphaShape
类来提取点云数据的边界点,并使用Open3D库进行可视化。
- 引入必要的头文件和命名空间:
main
函数:- 读取点云数据文件到
cloud
对象。如果读取失败,则输出错误信息并返回。 - 将点云数据全部着色为蓝色。
- 创建一个空的点云对象
boundaryCloud
,用于存储提取的边界点。 - 定义一个半径阈值
search_radius
。 - 创建
AlphaShape
对象BoundaryEstimation
,并调用其alpha_shapes
方法提取边界点,结果保存在boundaryCloud
中。 - 如果成功提取到边界点,则输出边界点的数量,并将边界点全部着色为红色。如果提取失败,则输出错误信息并返回。
- 使用Open3D的可视化功能,创建窗口并设置窗口属性。
- 将
boundaryCloud
和原始点云cloud
添加到可视化窗口中,并运行可视化。
- 读取点云数据文件到
#pragma once
#include <iostream>
#include <vector>
#include<Open3D\Open3D.h>
using namespace std;
class AlphaShape
{
//数据成员
double m_search_radius;
public:
AlphaShape(float search_radius =