根据高程值进行渐变色
通过提取Z坐标,最大、最小值,进而进行渐变色的处理。
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/common/common.h>
#include <pcl/visualization/cloud_viewer.h>
using namespace std;
int main()
{pcl::PointCloud<pcl::PointXYZ>::Ptr basic_cloud_ptr(new pcl::PointCloud<pcl::PointXYZ>);pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr(new pcl::PointCloud<pcl::PointXYZRGB>);if (pcl::io::loadPCDFile("00003.pcd", *basic_cloud_ptr) < 0){PCL_ERROR("Couldn't read file 00003.pcd\n");return(-1);}//加载点云数据。std::cout << "basic_point_ptr大小为:" << basic_cloud_ptr->size() << endl;for (int i = 0; i < basic_cloud_ptr->points.size(); i++){pcl::PointXYZRGB point;point.x = basic_cloud_ptr->points[i].x;point.y = basic_cloud_ptr->points[i].y;point.z = basic_cloud_ptr->points[i].z;point.r = 0;point.g = 0;point.b = 0;point_cloud_ptr->points.push_back(point);}std::cout << "point_cloud_ptr大小为:" << point_cloud_ptr->size() << endl;void render(pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr);{pcl::PointXYZRGB min, max;pcl::getMinMax3D(*point_cloud_ptr, min, max);std::cout << "Z轴最大值为:" << max.z << endl;std::cout << "Z轴最小值为:" << min.z << endl;//计算出Z轴的最大值,最小值。float L;float L_2;L = max.z - min.z;L_2 = L / 2.0;for (size_t i = 0; i < point_cloud_ptr->size(); ++i)//这里先用i的初始值+1,在循环。{if ((point_cloud_ptr->points[i].z - min.z) < L_2){point_cloud_ptr->points[i].r = 0;point_cloud_ptr->points[i].g = (255 * ((point_cloud_ptr->points[i].z - min.z) / L_2));point_cloud_ptr->points[i].b = (255 * (1 - ((point_cloud_ptr->points[i].z - min.z) / L_2)));//(0,0,225)开始}else{point_cloud_ptr->points[i].r = (255 * (point_cloud_ptr->points[i].z - min.z - L_2) / L_2);point_cloud_ptr->points[i].g = (255 * (1 - (point_cloud_ptr->points[i].z - min.z - L_2) / L_2));point_cloud_ptr->points[i].b = 0;}//(cloud->points[i].z - min.z) = L_2时,为(0,225,0);当(cloud->points[i].z - min.z) = L时,为(225,0,0)}}pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));viewer->setBackgroundColor(0, 0, 0);viewer->addPointCloud<pcl::PointXYZRGB>(point_cloud_ptr);while (!viewer->wasStopped()){viewer->spinOnce(100);std::this_thread::sleep_for(100ms);}//可视化return 0;
}
结果如下图显示,同理也可以根据X、Y轴进行渐变色的处理。
根据高程值进行渐变色相关推荐
- ArcMap 通过DEM获取高程值
第一种方法:Extract values to Points工具,这个网上的资料比较多,就不介绍了. 第二种方法:Interpolate Shape工具 直接用Arc Toolbox->3D A ...
- hsv白色h值是多少_使用Global Mapper给建筑轮廓SHP数据赋予高程值
如果想看到三维城市的效果,就需要把建筑轮廓SHP数据转换成三维白模.三维白模有多种格式和方法,但是均需要先给建筑轮廓矢量赋予高程值. 1.首先把SHP格式的建筑轮廓加载到GM中: 由于建筑轮廓数据存储 ...
- 得到Raster的一些基本信息(高程值,列数,列数)
得到Raster的一些基本信息(高程值,列数,列数) IRasterLayer pRasterLayer = (IRasterLayer)pSC1.Scene.get_Layer(0); IRaste ...
- cass绘制围墙lisp_CASS中用LISP完成高程值的可视化处理
CASS 中用 LISP 完成高程值的可视化处理 摘要: lisp 能大大提高工作效率,减少操作错误率并提高作业精度.通过自身工 作实践,简单介绍下如何利用三角形原理用 lisp 将高程值转为可视化线 ...
- 基于FME实现dwg等高线、高程点、计曲线注记的高程值批量修改研究,等高线批量修改高程,高程点批量修改高程,计曲线注记批量修改高程
目录 一.实现效果 1.修改后的数据截图 2.原始数据截图 二.实现过程 1.高程调整值参数输入 2.高程点的高程调整 3.等高线的高程调整 4.计曲线注记的高程调整 5.输出设置 6.FME模板的整 ...
- 根据高程值批量修改等高线为计曲线工具,FME实现等高线批量修改成计曲线,根据高程值自动识别计曲线,解决地形图计曲线丢失问题,等高线批量提取计曲线,首曲线根据高程批量转换成计曲线
计曲线在地形图等高线中是必不可少的,当拿到的等高线数据因为各种原因导致没有计曲线时,怎么办呢?人工修改将非常耗时耗力,且容易遗漏,下面带来一个根据高程值从等高线中自动识别出计曲线,并批量修改的工具.关 ...
- 基于C#的ArcEngine二次开发28: 等高线高程值与国标码一致性检查思路及代码分析
1 高程值 类型 说明 首曲线 基本等高线.是按基本等高距测绘的等高线,一般用细实线(0.15mm)描绘,是表示地貌状态的主要等高线 计曲线 加粗等高线.为了便于判读等高线的高程,自高程起算面开始,每 ...
- 根据实测高程值校正DSM高程
思路: 1.根据实测点的坐标提取DSM中相应坐标点的高程值: 2.对比两套高程值,求取关系式 3.DSM改正 1.把实测点展到arcgis,展点的时候选上z坐标为高程值 2.arcgis由点提取值 勾 ...
- 给定桩号获取纵断面中的高程值(c# for civil3d)
通过civil3d提供的api,也就是纵断面Profile类提供的方法---public double ElevationAt(double station),就可以很轻松的获取纵断面对象某桩号处的高 ...
最新文章
- asp.net的JSON数据进行序列化和反序列化
- 关于ActionBar的向下兼容
- Docker 练习(一)——搭建web服务
- 菜鸟学java要多久_菜鸟学java,根本停不下来!
- UC浏览器电脑版播放视频时出现崩溃怎么解决
- Shiro——RememberMe
- 编辑器图片上传 linux,summernote 富文本编辑器上传本地图片
- 根据excel批量归类文件
- POJ NOI0101-08 字符三角形
- java证书不见了_java – 找不到证书链
- 用shell把所有文件名修改为小写
- 2020-21《全球软件质量报告》解读
- Eclipse的MAT的支配树
- 阿里云OSS删除文件详细步骤
- iPhone/iPad各机型如何进入恢复模式 苹果进入恢复模式的方法
- SublimeText3和EverEdit 的一些使用感受
- 2010年一句话破解QQ密码!
- 软件工程 -- 系统流程图
- 大数据 搜索 ES 一
- 【云周刊】第171期:重磅推荐,神龙架构首次开箱直播评测