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库对点云进行渲染可视化,根据需要可以设置不同颜色,同时展示了三维、二维可视化角度效果。

相关推荐

  1. Python

    2024-07-12 06:46:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 06:46:03       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 06:46:03       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 06:46:03       62 阅读
  4. Python语言-面向对象

    2024-07-12 06:46:03       72 阅读

热门阅读

  1. vue 级联下拉框选择的思维

    2024-07-12 06:46:03       27 阅读
  2. qt 图形、图像、3D相关知识

    2024-07-12 06:46:03       16 阅读
  3. UVa1459/LA4748 Flowers Placement

    2024-07-12 06:46:03       24 阅读
  4. MybatisPlus 一些技巧

    2024-07-12 06:46:03       26 阅读
  5. 云计算练习题

    2024-07-12 06:46:03       27 阅读
  6. 怎么在ad原理图中替换器件

    2024-07-12 06:46:03       24 阅读
  7. 目标识别步骤

    2024-07-12 06:46:03       26 阅读
  8. vs QT Use QGuiApplication::screens报错

    2024-07-12 06:46:03       27 阅读
  9. 【qml学习笔记】QML与C++的交互

    2024-07-12 06:46:03       30 阅读
  10. stm32使用串口打印

    2024-07-12 06:46:03       23 阅读
  11. Windows驱动开发

    2024-07-12 06:46:03       29 阅读
  12. [linux] git push时需要输入user 和keyword

    2024-07-12 06:46:03       24 阅读
  13. 【AIGC】GPT-4深度解析:自然语言处理的新纪元

    2024-07-12 06:46:03       23 阅读