一、 Open3D中根據點云的高程度信息為點云中的每個點附上顏色,并保存顏色渲染結果!
#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;
}
二、測試結果為: