Python用于网格和点云可视化的库2025 年 1 月 5 日 | 阅读 9 分钟 Python 以其广泛的库而闻名,这些库用于表示网格和点云数据的可视化。这些 3D 图像在计算机图形学和科学研究等各种领域中起着重要作用。Python 生态系统提供了各种用于可视化网络和点云数据的工具。这些工具包括 Mayavi 和 PyVista 提供的 3D 功能,以及 Matplotlib 和 Plotly 的高级功能。这些库的先进知识使 Python 工程师能够以信息丰富且引人入胜的方式呈现复杂的信息。无论是在科学研究、技术领域还是数据挖掘方面,这些可视化库都至关重要。 众多重要的 Python 库在可视化网格和点云方面堪称一流,可满足计算机图形学、科学可视化和数据分析等不同需求。值得注意的选项包括。可以使用多个 Python 库来可视化网格和点云。下面列出了广泛使用的 Python 3D 视频图形库 PyVistaPyVista 是一个强大的 Python 工具,用于显示和评估 3D 点云、网格和体积信息。该库提供了一种用户友好的方式来在三维环境中显示点云数据,以及从这些数据创建 3D 表示的能力。PyVista 对所有人免费开放,并且可以通过 pip 包管理器轻松安装。 PyVista 安装 首先,请确保您的系统已安装最新版本的 Python。然后,使用 Python 包管理器 pip 执行安装任务。按照以下命令安装 PyVista。 命令 现在,将库导入 Python 或 Jupyter Notebook 中,以使用 Pyvista 库的多个函数。 代码 说明 在上面的程序中,我们使用了 pyvista 和 numpy 这两个 Python 模块。接下来,使用 `numpy.random.rand()` 函数在 3D 空间中生成随机点。然后,我们使用大小为 (500, 3) 的数组生成了一个数组,表示 500 个点以及 3 个坐标。将随机值分配给每个位置并存储在数据集中。最后一步是对 `cloud` 对象调用 `plot()` 函数。 Open3DOpen3D 是广泛使用的 Python 包,可轻松处理 3D 数据。该包是使用 C++ 和 Python 语言创建的。但最棒的是它可以与各种平台一起使用。这个多功能工具提供了许多广泛的功能,可用于 3D 数据处理的范围,有效地处理点云、网格和其他文件格式。Open3D 使我们能够执行可视化、配准和分割等各种目标。 Open3D 安装 从 GitHub 访问 Open3D 库是一个简单的过程,并且可以使用 pip 包管理器轻松地将其安装在您的系统上。 命令 在下面的部分,您可以看到两个流行的 3D 处理库的说明:Open3D 和 PyntCloud。这两个库都创建具有独特 API 和特征的 3D 点云和网格。以下代码显示了这两个库之间的 3D 网格转换过程。 代码 说明 在上述代码中,我们使用 Open3D 从 PLY 文件导入了一个矩形网格。接下来,我们使用 from_instance() 函数将其转换为 PyntCloud 实体。接着,通过 PyntCloud 从 PLY 文件检索点云,并使用带“open3d”参数的 to_instance() 函数将其转换回 Open3D 三角网格实体。 点云文件格式 (Open3D)
网格文件格式 (Open3D)
PyntCloudPyntCloud 是一个卓越的 Python 库,允许用户轻松地操作和分析三维点云。这个多功能库提供了许多高效的工具,用于过滤、转换和可视化点云数据。 PyntCloud 安装 PyntCloud 的优势在于其开源性质和易于安装,只需一个简单的 pip 命令即可完成。 命令 以下代码示例了 PyntCloud 库在处理 3D 点云信息方面的应用。下面将详细解释代码中的每个元素。 代码 说明 在上面的代码中,我们在代码开头从 PLY 文件 "some_file.ply" 导入了一些点云数据。然后,通过向颜色空间添加标量场来增加 HSV 数据集。创建了一个大小为 32x32x32 的体素网格结构,并将其分配给名为“voxelgrid_id”的变量。之后,代码继续使用最近邻方法从体素网格中采样数据,并将其存储在名为“new_cloud”的变量中。 如何生成简单的网格?下面是一个示例,提供了生成简单网格云可视化的分步过程。NumPy 包将用于开发点的合并和数字,这些数字指示了框架的结构和构成。我们将创建一个边长为一的立方体框架。此外,我们将了解如何使用 PyntCloud 包操作 3D 点云数据。以下是对代码每一行的详细解释。 代码 输出 ![]() 说明 在上面的示例中,我们使用 NumPy 和 Matplotlib 来设置和显示 3D 类。然后,代码以 3D 模式显示三角形的顶点,并显示这些边如何形成三角形。接下来,按顺序投影三角形的表面,然后脚本使用 `projection='3d'` 创建一个 3D 图。然后,它折叠一系列矩形,并将每个矩形的表面涂成蓝色。 从点云生成网格让我们从点云生成一个复杂的网格;我们将使用 PyMesh 库,通过点云网格重建技术从一组点云中构建一个网格。此技术将从一组散点中开发出连贯的表面。 代码 输出 ![]() 说明 上面的代码表示一个创建和显示的 3D 点云,并使用 PyMesh 转换为网格。这些点使用具有中心半径的定义圆表面上随机散布的 5000 个点的球形点云绘制,然后使用 Matplotlib 的 3D 散点图。接下来,代码初始化 PyMesh 对象,用先前创建的点云加载它,并使用 `reconstruct()` 函数指定的 `eta` 参数将其转换为网格。 点云示例查看点云示例,读取点云并进行可视化。 可视化点云说明 上面的示例打印一条消息,指示加载和可视化过程。然后,我们使用 Open3D 库提供了预定义的兔子点云,并使用“read_point_cloud”将其读入变量“pcd”。之后,打印点云中的点数,并将点云的顶点显示为 NumPy 数组。然后,代码使用 Open3D 的可视化功能可视化点云。 注意:按 H 键可获得图形用户界面 (GUI) 的完整键盘说明。但是,值得注意的是,GUI 窗口在 macOS 上可能无法响应按键。在这种情况下,建议使用 pythonw 而不是 python 来启动 Python。输出 Load a visualize point cloud… ![]() 体素下采样体素缩减使用规则的体素网格从初始点集中生成均匀下采样的一组点。此技术通常是各种点云处理任务的初步步骤。该过程包含两个主要阶段。 代码 说明 上面的代码描述了使用 Open3D 对点云进行下采样。然后,代码显示信息,声明下采样过程,体素大小为 0.1 个单位。接下来,将 voxel_down_sample() 函数应用于原始点云实体 `pcd`,提供了一个标记为 `downpcd` 的下采样迭代。之后,它使用 Open3D 的 draw_geometries() 函数显示下采样后的点云。 输出 Downsample the point cloud with a 0.1 voxel ![]() 裁剪点云说明 上面的代码演示了加权多边形形状并使用它来通过绘制椅子来裁剪点的过程。接下来,代码导入 Open3D 提供的预定义多边形形状和各种点。然后使用 trim_point_set() 方法来修剪落在指定形状内的一半点。接下来,使用 display_shapes() 方法显示裁剪后的点(显示椅子)。 输出 Load a polygon volume and crop the original point cloud. ![]() 点云距离compute_point_cloud_distance 函数定义了 Open3D 中源点云和目标点云数据之间的差异。它测量源点云中的每个点与目标点云最近点数据之间的距离。 此函数用于查看两个点云之间的差异。此外,此技术用于识别两个点云之间的距离。 代码 说明 在上面的代码中,点云数据集根据预定义的polygon volume进行加权,以确定椅子上的特定兴趣区域。在此多边形体积内,代码简单地剪切了根点云以隔离座椅块。然后,计算原始点云与每个点位置之间的距离。到座椅的距离超过 0.02 个单位的点被视为背景的一部分。这些离群点被识别出来,并用于提取长凳并生成新的点云。 输出 ![]() 绘制点云说明 上面的代码描述了将相同的颜色应用于 3D 几何对象。paint_uniform_color() 方法用于为椅子分配特定颜色。在这种情况下,椅子的颜色 [0.2, 0.8, 0.5] 是金色。在用所需的颜色给椅子上色后。 输出 Painted chair ![]() 结论Python 库提供了多种用于显示网格和点云数据的函数,简化了 Python 开发人员使用 Matplotlib、Mayavi、PyVista 和 Plotly 库检查和展示复杂数据的过程,这些库以其广泛的功能而闻名,从基本编程到交互式 3D 建模。这些库促进了计算机图形学和科学创新等各个领域的创新和团队合作。 下一个主题使用 Python 进行 RFM 分析 |
我们请求您订阅我们的新闻通讯以获取最新更新。