赞
踩
原理看一下代码写的很仔细的。。目前在同一个窗口最多建立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) # 一个窗口可视化多个点云
测试数据链接:https://pan.baidu.com/s/1am-4qlxuX_l6uoDeIbpPrA
提取码:ffs2
报错原因:添加到可视化窗口的的点云名重复
解决:更改点云名在窗口的名即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。