Traceback (most recent call last): File "c:/Users/chenjiayi/Documents/jiayi/new_peizhun/cloud_stl.py", line 177, in <module> main() File "c:/Users/chenjiayi/Documents/jiayi/new_peizhun/cloud_stl.py", line 173, in main peizhun(stp_file_path, stl_file_path, pcd_file_path, save_file_path) File "c:/Users/chenjiayi/Documents/jiayi/new_peizhun/cloud_stl.py", line 138, in peizhun target = mesh.sample_points_uniformly(number_of_points=10000) # 将STL转换为点云 AttributeError: 'open3d.open3d.geometry.TriangleMesh' object has no attribute 'sample_points_uniformly'
时间: 2025-03-12 11:18:11 浏览: 39
从错误信息来看,您正在使用 Open3D 库对三角网格模型(Triangle Mesh)进行处理,并尝试调用 `sample_points_uniformly` 方法将 STL 文件转换为均匀采样的点云。然而,系统报出了一个 AttributeError 错误,提示 `'open3d.open3d.geometry.TriangleMesh' object has no attribute 'sample_points_uniformly'`。
这通常是因为您的 Open3D 版本较低,在旧版本中确实不存在名为 `sample_points_uniformly` 的方法。这个方法是在较新的 Open3D 版本中引入的功能。
### 解决方案:
#### 1. 检查当前 Open3D 的版本
您可以运行以下命令查看安装的 Open3D 版本是否支持 `sample_points_uniformly` 方法。
```python
import open3d as o3d
print(o3d.__version__)
```
如果显示的是低于 **0.9.0** 的版本号(例如 0.7.x 或更低),那么您需要升级 Open3D 至最新版。
#### 2. 升级 Open3D
通过 pip 命令更新至最新版本即可解决问题:
```bash
pip install --upgrade open3d
```
完成升级后再次测试脚本,确认问题已经解决。
---
如果您不想立即升级库文件,也可以采用另一种替代方式生成随机点云样本:
```python
pcd = mesh.sample_points_poisson_disk(number_of_points=10000)
```
这里我们使用了 Poisson Disk Sampling 算法作为备选手段,它可以达到类似的效果——即从三角形网上抽取固定数量的点形成点云结构。
最后记得保存更改后的 PCD 数据并继续后续流程操作!
阅读全文
相关推荐

















