C++ 【 Open3D 】 点云按高程进行赋色

时间:2024-07-10 10:28:38
#include<iostream> #include<open3d/Open3D.h> using namespace std; int main() { //-------------------------------读取点云--------------------------------- auto cloud = std::make_shared<open3d::geometry::PointCloud>(); if (open3d::io::ReadPointCloud("hand.pcd", *cloud) == 0) { open3d::utility::LogInfo("点云读取失败!!!"); return -1; } // ---------------------------计算高程取值范围---------------------------- double maxZvalue = cloud->GetMaxBound()[2]; double minZvalue = cloud->GetMinBound()[2]; cout << "最大值为:: " << maxZvalue << ",最小值为: " << minZvalue << endl; // ----------------------根据高程对点云进行颜色渲染----------------------- cloud->colors_.resize(cloud->points_.size()); open3d::visualization::ColorMapJet colormap; for (size_t i = 0; i < cloud->points_.size(); ++i) { // 高程归一化 double normZvalue = (cloud->points_[i][2] - minZvalue) / (maxZvalue - minZvalue); cloud->colors_[i] = colormap.GetColor(normZvalue); // 颜色渲染 } open3d::io::WritePointCloudToPCD("Elevation.pcd", *cloud, false); // ------------------------------结果可视化------------------------------ open3d::visualization::DrawGeometries({ cloud }, u8"点云按高程赋色", 800, 600); return 0; }