SLAM 将PCL点云转换成彩色的八叉树地图

📅 2026/7/10 1:40:05
SLAM 将PCL点云转换成彩色的八叉树地图
这个程序可以把PCL点云压缩成带颜色的八叉树地图。先看一下输入数据是一个咖啡厅的一小部分程序运行后会生成带颜色的八叉树地图使用octovis查看把输出结果按高度染色输入任意PCL点云 pointcloud.pcd输出八叉树地图 pointcloud.ot运行编译后在cmd里带参数才能运行 pointcloud.pcd pointcloud.ot示例program,exe sample.pcd sample.ot视频演示https://www.bilibili.com/video/BV15NVb6zENo/代码#include iostream #include assert.h //pcl #include pcl/io/pcd_io.h #include pcl/point_types.h //octomap #include octomap/octomap.h #include octomap/ColorOcTree.h using namespace std; int main( int argc, char** argv ) { if (argc ! 3) { coutUsage: pcd2colorOctomap input_file output_fileendl; return -1; } string input_file argv[1], output_file argv[2]; pcl::PointCloudpcl::PointXYZRGBA cloud; pcl::io::loadPCDFilepcl::PointXYZRGBA ( input_file, cloud ); coutpoint cloud loaded, piont size cloud.points.size()endl; //声明octomap变量 coutcopy data into octomap...endl; // 创建带颜色的八叉树对象参数为分辨率这里设成了0.05 octomap::ColorOcTree tree( 0.05 ); for (auto p:cloud.points) { // 将点云里的点插入到octomap中 tree.updateNode( octomap::point3d(p.x, p.y, p.z), true ); } // 设置颜色 for (auto p:cloud.points) { tree.integrateNodeColor( p.x, p.y, p.z, p.r, p.g, p.b ); } // 更新octomap tree.updateInnerOccupancy(); // 存储octomap, 注意要存成.ot文件而非.bt文件 tree.write( output_file ); coutdone.endl; return 0; }参考SLAM拾萃(1)octomap - 半闲居士 - 博客园