python对点云可视化设置颜色

       

1、背景介绍

      点云分类/分割时,常需要对分类结果进行可视化,其中给点云赋予不同颜色是一种最直接方法。介绍基于python中matplotlib进行点云颜色渲染显示。

2、点云颜色渲染

2.1 有限种颜色渲染

      matplotlib在点云颜色渲染时,使用表示颜色的关键词来表示,如scatter为常见可视化函数,其中表示颜色的关键词有限,如下所示:

  • ‘red’:红色
  • ‘blue’:蓝色
  • ‘green’:绿色
  • ‘yellow’:黄色
  • ‘purple’:紫色
  • ‘orange’:橙色
  • ‘cyan’:青色
  • ‘magenta’:品红色
  • ‘pink’:粉红色
  • ‘black’:黑色
  • ‘white’:白色
  • ‘gray’ 或 ‘grey’:灰色
  • ‘brown’:棕色
scatter(xarr, yarr, c='brown', marker='.')

  2.1.1 三维空间有限颜色渲染

       需要说明的是,使用   ax.scatter(xarr, yarr, c='brown', marker='.')命令进行点云可视化,其可以同时可视化二维与三维。   可视化结果与代码如下:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号with open('E:\\工.txt', 'r') as file:# 初始化一个列表来存储所有的点points3D = []# 逐行读取数据for line in file:# 去除行尾的换行符并分割字符串x, y, z= line.strip().split(',')# 将字符串转换为浮点数x = float(x)y = float(y)z = float(z)# 将点添加到列表中points3D.append((x, y, z))
xarr,yarr,zarr=zip(*points3D)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# ax.scatter(xarr, yarr, zarr, c='brown', marker='.')
ax.scatter(xarr, yarr, c='red', marker='.')#显示红色
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')# 显示图形
plt.show()
三维可视化二维可视化

  2.1.2 二维(平面)空间有限颜色渲染

       若只对其进行二维可视化(投影到水平面上),需要如下效果,则可以使用plt.scatter()函数

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号points2D=[]
x_arr=[]
y_arr=[]
with open('E:\\工.txt', 'r') as file:# 初始化一个列表来存储所有的点points2D = []color_arr=[]xarr=[]yarr=[]zarr=[]# 逐行读取数据for line in file:# 去除行尾的换行符并分割字符串x, y, z= line.strip().split(',')# 将字符串转换为浮点数x = float(x)y = float(y)z = float(z)points2D.append((x,y))color_arr.append((0.0,1.0,0.0))xarr.append(x)yarr.append(y)zarr.append(z)plt.scatter(*zip(*points2D), marker='o', color='blue',s=5)
# 显示图表
plt.show()

2.2 任意颜色渲染

2.2.1 三维空间任意颜色渲染

    上述介绍的是有限种颜色渲染,任意颜色渲染,若是三维空间,则可以按照如下代码:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号points2D=[]
x_arr=[]
y_arr=[]
with open('E:\\工.txt', 'r') as file:# 初始化一个列表来存储所有的点points2D = []color_arr=[]xarr=[]yarr=[]zarr=[]# 逐行读取数据for line in file:# 去除行尾的换行符并分割字符串x, y, z= line.strip().split(',')# 将字符串转换为浮点数x = float(x)y = float(y)z = float(z)points2D.append((x,y))#r g b颜色随意添加,0-1.0之间# color_arr.append((0.0, 1.0, 0.0))#显示绿色color_arr.append((np.random.rand(), np.random.rand(), np.random.rand()))#任意颜色xarr.append(x)yarr.append(y)zarr.append(z)color_arr=np.array(color_arr)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# ax.scatter(xarr, yarr, c='brown', marker='.')
ax.scatter(xarr, yarr, zarr, c=color_arr, marker='.')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
每个点颜色相同每个点颜色不相同

2.2.2 二维(平面)空间任意颜色渲染

      每个点的r、g、b颜色均不相同,如下所示:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号points2D=[]
x_arr=[]
y_arr=[]
with open('E:\\工.txt', 'r') as file:# 初始化一个列表来存储所有的点points2D = []color_arr=[]xarr=[]yarr=[]zarr=[]# 逐行读取数据for line in file:# 去除行尾的换行符并分割字符串x, y, z= line.strip().split(',')# 将字符串转换为浮点数x = float(x)y = float(y)z = float(z)points2D.append((x,y))#r g b颜色随意添加,0-1.0之间# color_arr.append((0.0, 1.0, 0.0))#显示绿色color_arr.append((np.random.rand(), np.random.rand(), np.random.rand()))#任意颜色xarr.append(x)yarr.append(y)zarr.append(z)color_arr=np.array(color_arr)
plt.scatter(*zip(*points2D), marker='o', color=color_arr,s=5)
plt.show()
每个点颜色相同每个点颜色不相同

3、总结

     介绍了基于matplotlib库对点云进行渲染可视化,根据需要可以设置不同颜色,同时展示了三维、二维可视化角度效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录】【算法训练营】【第65天】 [卡码94]城市间货物运输I

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 65,周四,继续ding~ [卡码94] 城市间货物运输I 题目描述 卡码94 城市间货物运输I 解题思路 前提: 思路: 重点: 代码实现 C语言 Be…

快递查询|阿里云实现调用API接口

整体请求流程 介绍: 本次解析通过阿里云云市场的云服务来实现程序中对快递包裹实时监控,首先需要准备选择一家可以提供快递查询的商品。 https://market.aliyun.com/apimarket/detail/cmapi00065859#skuyuncode5985900001 步骤1: 选择商品 如图点击…

网站外链还有没有作用

前言 还记得“内容为王,外链为皇”这句话吗?在以前网站外链是网站优化中非常主要的环节。那时候做一个网站,只要不停的发外链,收录就不会差,于是大部分站长都使劲发外链。 有市场就有商场,大家都看到外链…

【国内超大型智能算力中心建设白皮书 2024】_智算中心算力规划

文末有福利! 智算中心建设通过领先的体系架构设计,以算力基建化为主体、以算法基建化为引领、以服务智件化为依托,以设施绿色化为支撑,从基建、硬件、软件、算法、服务等全环节开展关键技术落地与应用。 一、体系架构 &#xf…

基于扩散的生物打印策略,控制可打印性和结构特性

基于扩散的生物打印策略,控制可打印性和结构特性 在生物打印中,将生物材料和细胞按特定设计逐层堆积,构建具有复杂结构和功能的三维组织结构。微挤出生物打印是最常用的方法,其核心是生物墨水,它由聚合物材料和细胞组…

国漫推荐02

童年经典 1.《雷速登闪电冲线》赛车、竞赛 2.《雷速登之翼飞冲天》直升机、竞赛 3.《纳米神兵》该剧进述11岁少年小光如何用自己的善良和热忱感化原本企图侵略地球的外星族群,并带领他们一同对抗其他邪恶的外星人,由此一步步成长为拯救地球和人类的英雄…

在线绘图小工具

在线绘图小工具 文章说明程序源码功能展示源码下载 文章说明 本文主要是在看了袁老师的canvas绘图小视频后所写,记录一个简单的canvas绘图功能,并学习一下较为传统的JavaScript事件写法,同时了解一下拖拽事件的更合理写法,等待后续…

C++相关概念和易错语法(18)(array、模板)

1.array (1)普通数组的劣势 当我们直接越界修改值时,一般会在编译时就被拦截 但是越界访问,只要访问距离不算特别大,那么也可以越界访问 当我们不直接越界修改或访问,间接去访问和修改能越界非常远 这里的…

翻牌器单独设置前后缀样式

翻牌器单独设置前后缀样式 <template><div :style"[fontStyle,styleBackGroundColor]"><!-- <span style"color: #1d1d1d"> {{optionData}}</span>--><!-- 设置前缀样式 --><span class"prefix" …

怎么样的主食冻干算好冻干?品质卓越、安全可靠的主食冻干分享

当前主食冻干市场产品质量参差不齐。一些品牌过于追求营养数据的堆砌和利润的增长&#xff0c;却忽视了猫咪健康饮食的基本原则&#xff0c;导致市场上出现了以肉粉冒充鲜肉、修改产品日期等不诚信行为。更令人担忧的是&#xff0c;部分产品未经过严格的第三方质量检测便上市销…

Hadoop的HA模式搭建

准备三台虚拟机 bigdata007&#xff0c;bigdata008&#xff0c;bigdata009 1.前置工作 1.修改虚拟机的IP地址和hostname 2.配置集群中的ip映射&#xff08;/etc/hosts&#xff09; 192.168.111.57 bigdata007 192.168.111.58 bigdata008 192.168.111.59 bigdata0093.关闭虚拟…

武夷山细节决定成败抓质量求生存

在当今竞争激烈的市场环境中&#xff0c;细节决定成败&#xff0c;质量求生存的理念已成为企业发展的关键。蓝鹏测控科技有限公司&#xff0c;一家专业从事工业测量领域的高新技术企业&#xff0c;正是秉持这一理念&#xff0c;在工业测径仪领域取得了显著成就。 蓝鹏测控科技…

pandas修改时间索引报错处理

import pandas as pd import numpy as np import osdfpd.DataFrame(index[a,b,c],data{序列:[1,2,3]}) df.rename(index{a:a1},inplaceTrue) print(df) print(df.index.dtype)df1pd.DataFrame(index[2024-01-01,2024-01-02,2024-01-03],data{序列:[1,2,3]}) df1.rename(index{2…

Excel——REPLACE函数实现敏感信息打码

第一步&#xff1a; 以素材Excel文档为例。 在F2单元格中输入函数“REPLACE(B2,4,5,"*****")”&#xff0c;输入完毕后&#xff0c;按Enter键开始计算&#xff0c;并使用填充柄对其他区域进行填充。 这个函数的意思是&#xff1a;从第4位数字开始的5个数字用5个“…

医院门诊预约挂号小程序模板源码

医院门诊预约挂号小程序模板源码,主要有&#xff1a;绿色的医院住院办理&#xff0c;门诊预约挂号微信小程序页面模板。包含&#xff1a;办卡绑定、快速办理预约挂号、门诊缴费、住院服务、医院信息、个人中心、添加就诊人、找医生等等。 医院门诊预约挂号小程序模板源码

Elasticsearch:使用 Filebeat 从 Node.js Web 应用程序提取日志

本指南演示了如何从 Node.js Web 应用程序中提取日志并将其安全地传送到 Elasticsearch Service 部署中。你将设置 Filebeat 来监控具有标准 Elastic Common Schema (ECS) 格式字段的 JSON 结构日志文件&#xff0c;然后在向 Node.js 服务器发出请求时&#xff0c;你将在 Kiban…

Doris安装部署

Doris安装部署 1、 MPP概念2.Doris简要介绍 1、 MPP概念 MPP (Massively Parallel Processing)&#xff0c;即大规模并行处理&#xff0c;在数据库非共享集群中&#xff0c;每个节点都有独立的磁盘存储系统和内存系统&#xff0c;业务数据根据数据库模型和应用特点划分到各个节…

无人机之电池保养

一、充电时 1、推荐使用官方充电器和充电管家 2、充电时确保电池处于关闭状态 3、冷却后再充电理想充电温度22-28度 二、使用时 1、首次使用需要充电唤醒电池 2、切勿将电池耗尽过放容易造成电池鼓包 三、储存时 1、存放在环境干燥通风的地方 2、不使用时每两个月充一…

谷粒商城实战-25-分布式组件-SpringCloud Alibaba-Nacos配置中心-加载多配置集

文章目录 一&#xff0c;拆分配置集二&#xff0c;配置文件中配置多配置集1&#xff0c;引用多配置集2&#xff0c;验证 三&#xff0c;多配置集总结1&#xff0c;使用场景2&#xff0c;优先级 这一节介绍如何加载多个配置集。 大多数情况下&#xff0c;我们把配置全部放在一个…

C语言 结构体和共用体——对结构体的操作

目录 如何访问结构体的成员&#xff1f; 结构体变量的赋值操作 结构体变量的取地址值操作 如何访问结构体的成员&#xff1f; 结构体变量的赋值操作 结构体变量的取地址值操作