oboxes = inliers_cloud.detect_planar_patches( RuntimeError: [Open3D Error] (class std::vector<class std::shared_ptr<class open3d::geometry::OrientedBoundingBox>,class std::allocator<class std::shared_ptr<class open3d::geometry::OrientedBoundingBox> > > __cdecl open3d::geometry::PointCloud::DetectPlanarPatches(double,double,double,double,unsigned __int64,const class open3d::geometry::KDTreeSearchParam &) const) D:\a\Open3D\Open3D\cpp\open3d\geometry\PointCloudPlanarPatchDetection.cpp:963: DetectPlanarPatches requires pre-computed normal vectors.
时间: 2023-08-20 21:05:26 浏览: 373
java_Grou.rar_error detect_hamming code java
这个错误是由于在执行 `detect_planar_patches` 函数时,没有预先计算法向量导致的。`detect_planar_patches` 函数需要法向量作为输入来检测平面补丁。
为了解决这个问题,你需要在调用 `detect_planar_patches` 函数之前,先计算点云的法向量。你可以使用 `estimate_normals` 函数来计算点云的法向量。示例代码如下:
```python
import open3d as o3d
# 读取点云数据
pcd = o3d.io.read_point_cloud("point_cloud.pcd")
# 计算法向量
pcd.estimate_normals()
# 检测平面补丁
inliers_cloud, outliers_cloud = pcd.detect_planar_patches()
# 其他操作...
```
这样修改后,你应该可以成功执行 `detect_planar_patches` 函数了。
阅读全文