scene_cloud = open3d.geometry.PointCloud()
scene_cloud.points = open3d.utility.Vector3dVector(scene_points)
scene_cloud = scene_cloud.voxel_down_sample(voxel_size)
執行上面代碼第三句報錯,出現了下面這個錯誤:
AttributeError: 'open3d.open3d.geometry.PointCloud' object has no attribute 'voxel_down_sample'
我chatgpt后,給我說:
從Open3D 0.10.0版本開始,點云的體素下采樣方法名稱從voxel_down_sample
更改為voxel_down_sample_by_voxel_size
。
我心想我的版本是0.13.0,那改成這個新的方法就行了吧:
scene_cloud = scene_cloud.voxel_down_sample_by_voxel_size(voxel_size)
?結果問題還是原來的問題,也沒有這個屬性:AttributeError: 'open3d.open3d.geometry.PointCloud' object has no attribute 'voxel_down_sample_by_voxel_size'
我最終的解決方法是:
scene_cloud = open3d.geometry.PointCloud()scene_cloud.points = open3d.utility.Vector3dVector(scene_points)# 把這行注釋掉不要了
scene_cloud = scene_cloud.voxel_down_sample(voxel_size)
# 改成了這行, 也就是說open3d.gemetry有這個方法,open3d.geometry.PointCloud()沒有?
scene_cloud = open3d.geometry.voxel_down_sample(scene_cloud, voxel_size)