# PointCloudDebugger **Repository Path**: qulee/point-cloud-debugger ## Basic Information - **Project Name**: PointCloudDebugger - **Description**: 使用 VTK 展示点云的工具,依赖了 PCL 库 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-23 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PointCloudDebugger 示例 ## 概述 `PointCloudDebugger` 是一个用于可视化和调试点云数据的工具类。它能够通过在视图中添加、移除点云,以及通过不同颜色区分点云,实现点云的可视化调试。 本 README 将展示如何使用 `PointCloudDebugger` 进行常见操作。 ## 使用示例 ### 1. 移除点云 要移除一个特定的点云,可以使用 `removePointCloud` 方法,传入该点云的唯一标识符(ID)。例如,移除 ID 为 `1` 的点云: ```cpp PointCloudDebugger::getView()->removePointCloud(1); ``` 不用担心没有创建窗口实例,你可以在自己代码的任何地方通过 `PointCloudDebugger::getView()` 方法获取实例并直接调用对应方法, `PointCloudDebugger` 类会在第一次调用 `PointCloudDebugger::getView()` 时创建一个窗口实例,后续的 `PointCloudDebugger::getView()` 调用均返回这次创建的窗口实例,相对的 `PointCloudDebugger` 类只支持创建一个窗口实例。 ### 2. 添加点云 通过 `addPointCloud` 方法可以将一个点云对象添加到视图中,并为其指定一个颜色。此方法接受三个参数: - 第一个参数是点云数据对象(std::shared_ptr>)。 - 第二个参数是点云的唯一标识符(例如,`1`)。 - 第三个参数是点云的颜色,可以从 `distinctColors` 集合中获取指定颜色或自己设置颜色。 例如,将 `conversionCloud` 点云添加到视图,使用 `distinctColors` 中第 9 个颜色: ```cpp PointCloudDebugger::getView()->addPointCloud(conversionCloud, 1, PointCloudDebugger::getView()->distinctColors.at(9)); ``` ### 3. 可视化设置 点云的颜色可通过 `distinctColors` 集合来配置,它包含一组不同的颜色值,可以通过索引来获取所需的颜色。例如,`distinctColors.at(9)` 获取第 9 种颜色。 ### 4. 绘制线段 `PointCloudDebugger` 提供了多种绘制线段的方法,支持不同的参数形式: #### 方式1:起始点 + 结束点 直接指定线段的起始点和结束点: ```cpp pcl::PointXYZ start(0, 0, 0); pcl::PointXYZ end(10, 0, 0); Color red(1.0, 0.0, 0.0); // 绘制红色X轴线段,ID为1,线宽为4.0 PointCloudDebugger::getView()->addLine(start, end, 1, red, 4.0); ``` #### 方式2:起始点 + 方向向量 + 长度 使用方向向量和长度来定义线段: ```cpp pcl::PointXYZ start(5, 5, 0); pcl::PointXYZ direction(1, 1, 1); // 空间对角线方向 double length = 8.0; Color yellow(1.0, 1.0, 0.0); // 绘制黄色线段,ID为2,线宽为3.0 PointCloudDebugger::getView()->addLine(start, direction, length, 2, yellow, 3.0); ``` #### 方式3:起始点 + 航向角 + 俯仰角 + 长度 使用极坐标形式绘制线段(角度单位为弧度): ```cpp pcl::PointXYZ start(10, 10, 0); double yaw = M_PI / 4; // 航向角45度 double pitch = M_PI / 6; // 俯仰角30度 double length = 6.0; Color blue(0.0, 0.0, 1.0); // 绘制蓝色线段,ID为3,线宽为2.0 PointCloudDebugger::getView()->addLine(start, yaw, pitch, length, 3, blue, 2.0); ``` #### 移除线段 通过线段ID移除特定的线段: ```cpp // 移除ID为1的线段 PointCloudDebugger::getView()->removeLine(1); ``` ### 5. 其他方法 #### 获取视图对象 使用 `PointCloudDebugger::getView()` 可以获取当前的视图对象,并在其上执行操作,如添加或移除点云。 ```cpp auto view = PointCloudDebugger::getView(); ``` #### 获取所有点云颜色 `distinctColors` 是一个包含多种颜色的数组,可以通过索引访问。 ```cpp auto color = PointCloudDebugger::getView()->distinctColors.at(0); // 获取第一个颜色 ``` ## 注意事项 1. 确保每个点云都有唯一的标识符,以便正确管理和移除。 2. 确保引入库之前定义 PCL_DIR 变量 3. 推荐使用 CMAKE + CPM 方式引入库 ```cmake # 使用CPM # 如果CPM.cmake不存在则自动下载 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/cmake/CPM.cmake") file(DOWNLOAD "https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/CPM.cmake" "${CMAKE_SOURCE_DIR}/cmake/CPM.cmake") endif() include("${CMAKE_SOURCE_DIR}/cmake/CPM.cmake") # 确保 PCL_DIR 变量在顶层 CMakeLists.txt 中,且在引入该库之前定义 set(PCL_DIR "C:/Program Files/PCL 1.14.1/cmake") # 引入自己的库 CPMAddPackage( NAME PointCloudDebugger GIT_REPOSITORY https://gitee.com/qulee/point-cloud-debugger.git GIT_TAG v1.2 # 替换为需要的版本 ) ``` ## 贡献 欢迎提交 PR 和 Issues,帮助我们改进 `PointCloudDebugger`。请确保遵循项目的贡献指南。 ## License 此项目遵循 MIT 许可证。有关详细信息,请参见 [LICENSE](LICENSE) 文件。