pclpy 可视化点云(多窗口可视化、单窗口多点云可视化)

一、算法原理

原理看一下代码写的很仔细的。。目前在同一个窗口最多建立2个窗口。
多数据可视化把点云的名字更改一下即可,就在一个窗口下可视化多个点云。

二、代码

from pclpy import pcl

def multiCloudShow(cloud1, cloud2):
    """
    Args:多点云可视化在同一个窗口
        cloud1:  点云数据
        cloud2:  点云数据
    """
    viewer = pcl.visualization.PCLVisualizer("viewer")  # 建立可刷窗口对象 窗口名 viewer
    single_color = pcl.visualization.PointCloudColorHandlerCustom.PointXYZ(cloud1, 255.0, 0, 0.0)  # 将点云设置为红色
    viewer.addPointCloud(cloud1,  # 要添加到窗口的点云数据。
                         single_color,  # 指定点云的颜色
                         "sample cloud1",  # 添加的点云命名
                        )  # 点云添加到的视图

    single_color = pcl.visualization.PointCloudColorHandlerCustom.PointXYZ(cloud2, 0.0, 255.0, 0.0)  # 将点云设置为绿色
    viewer.addPointCloud(cloud2,  # 要添加到窗口的点云数据。
                         single_color,  # 指定点云的颜色
                         "sample cloud2",  # 添加的点云命名
                         )  # 点云添加到的视图

    # 窗口建立
    while not viewer.wasStopped():
        viewer.spinOnce(10)

def compareCloudShow(cloud1, cloud2):
    """
    Args:在一个窗口生成2个窗口可视化点云
        cloud1: 点云数据1
        cloud2: 点云数据2
    """
    viewer = pcl.visualization.PCLVisualizer("viewer")  # 建立可刷窗口对象 窗口名 viewer
    v0 = 1  # 设置标签名(0, 1标记第一个窗口)
    viewer.createViewPort(0.0, 0.0, 0.5, 1.0, v0)  # 创建一个可视化的窗口
    viewer.setBackgroundColor(0.0, 0.0, 0.0, v0)  # 设置窗口背景为黑色
    single_color = pcl.visualization.PointCloudColorHandlerCustom.PointXYZ(cloud1, 255.0, 0, 0.0)  # 将点云设置为红色
    viewer.addPointCloud(cloud1,          # 要添加到窗口的点云数据。
                         single_color,    # 指定点云的颜色
                         "sample cloud1",  # 添加的点云命名
                         v0)  # 点云添加到的视图

    v1 = 2  # 设置标签名(2代表第二个窗口)
    viewer.createViewPort(0.5, 0.0, 1.0, 1.0, v1)  # 创建一个可视化的窗口
    viewer.setBackgroundColor(255.0, 255.0, 255.0, v1)  # 设置窗口背景为白色
    single_color = pcl.visualization.PointCloudColorHandlerCustom.PointXYZ(cloud2, 0.0, 255.0, 0.0)  # 将点云设置为绿色
    viewer.addPointCloud(cloud2,  # 要添加到窗口的点云数据。
                         single_color,  # 指定点云的颜色
                         "sample cloud2",  # 添加的点云命名
                         v1)  # 点云添加到的视图

    # 设置点云窗口(可移除对点云可视化没有影响)
    viewer.setPointCloudRenderingProperties(0,  # 设置点云点的大小
                                            1,  # 点云像素
                                            "sample cloud1",  # 识别特定点云
                                            v0)  # 在那个窗口可视化
    viewer.setPointCloudRenderingProperties(0,  # 设置点云点的大小
                                            1,  # 点云像素
                                            "sample cloud2",  # 识别特定点云
                                            v1)  # 在那个窗口可视化
    viewer.addCoordinateSystem(1.0)  # 设置坐标轴 坐标轴的长度为1.0
    # 窗口建立
    while not viewer.wasStopped():
        viewer.spinOnce(10)


if __name__ == '__main__':
    # 读取一个点云
    cloud1 = pcl.PointCloud.PointXYZ()
    reader = pcl.io.PCDReader()  # 设置读取对象
    reader.read('res/bunny.pcd', cloud1)  # 读取点云保存在cloud中
    # 读取一个点云
    cloud2 = pcl.PointCloud.PointXYZ()
    reader = pcl.io.PCDReader()  # 设置读取对象
    reader.read('res/table_scene_lms400.pcd', cloud2)  # 读取点云保存在cloud中
    multiCloudShow(cloud1, cloud2)  # 一个窗口可视化多个点云

三、结果

1.多窗口可视化结果

在这里插入图片描述

2.单窗口多点云可视化

在这里插入图片描述

四、相关数据

测试数据链接:https://pan.baidu.com/s/1am-4qlxuX_l6uoDeIbpPrA
提取码:ffs2

五、问题与解决方案

1.问题

在这里插入图片描述

2.解决

报错原因:添加到可视化窗口的的点云名重复

解决:更改点云名在窗口的名即可

相关推荐

  1. 速通知识

    2024-02-23 12:24:07       37 阅读
  2. laspy + open3d 实现.las

    2024-02-23 12:24:07       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-23 12:24:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-23 12:24:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-23 12:24:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-23 12:24:07       20 阅读

热门阅读

  1. 沁恒CH32V30X学习笔记04--外部中断

    2024-02-23 12:24:07       26 阅读
  2. Linux安全基线与加固

    2024-02-23 12:24:07       34 阅读
  3. 【深入了解TensorFlow】TensorFlow的安装与配置

    2024-02-23 12:24:07       29 阅读
  4. 【Mysql事务】

    2024-02-23 12:24:07       30 阅读
  5. Cobra在ubuntu中设置自动补全

    2024-02-23 12:24:07       30 阅读
  6. Ubuntu22.04防火墙ufw用法

    2024-02-23 12:24:07       25 阅读
  7. ubuntu环境下openssl库的简单使用

    2024-02-23 12:24:07       28 阅读
  8. C语言------字符串函数(2)

    2024-02-23 12:24:07       28 阅读