【无标题】

python+open3d 裁剪点云

open3d 裁剪方式

打开官网文档,直接搜crop
http://www.open3d.org/docs/release/index.html
往下翻一翻,可以找到一个示例,意思是从json文件里读取一个多边形边界,然后用边界去过滤点云。要是想随时修改点云区域,还得改json文件么,感觉不好怎么好用
在这里插入图片描述
再向下翻找到了一个更简单的crop
pointcloud = pointcloud.crop(bounding_box)
然后看一下传参是怎么写的,点进去(open3d.geometry.AxisAlignedBoundingBox),看一下这个类型是怎么定义的
进去后看见有个静态方法create_from_points(points),看样子是从点集生成边界数据,继续看下点集是什么格式(open3d.utility.Vector3dVector)

在这里插入图片描述
进去后是这样子的,一目了然,还给了例子,这就比较简单了,边界点是n*3的array
在这里插入图片描述
实际操作一下:
找了一帧点云,然后设置好边界点,最后直接用crop就可以了

import open3d
pcd = open3d.io.read_point_cloud(r'D:\project\f_2023-11-24-21-40-00-159_76067.pcd')
bounds = [[-2.84, 0.255, 0], [-2.84, 0.74, 0], [-1.6, 0.74, 0], [-1.6, 0.74, 0],
          [-1.6, 0.74, 4.5], [-1.6, 0.255, 4.5], [-2.84, 0.255, 0], [-2.84, 0.74, 4.5]]
# print(bounds)
bound_box = open3d.geometry.AxisAlignedBoundingBox.create_from_points(open3d.utility.Vector3dVector(bounds))
pcd_crop = pcd.crop(bound_box)
open3d.visualization.draw_geometries([pcd_crop])

这样我只要更改这8个控制点就可以裁剪不同区域了,同时可以设置更多的边界点构成异形区域,搞个花样裁剪也是没问题的

根据pandas裁剪

有些时候我只要裁剪水平竖直的矩形区域,控制这么多点麻烦,所以可以将点云转成numpy数据再转成pandas,这样点云就成了数组了

pcd = open3d.io.read_point_cloud(r'D:\project\f_2023-11-24-21-40-00-159_76067.pcd')
data = np.asarray(pcd.points)
pds = pd.DataFrame(data)
bounds = [[-2.84, -1.6], [0.255, 0.74], [0, 4.5]]
cut = pds[(pds[0] > bounds[0][0]) & (pds[0] < bounds[0][1]) & (pds[1] > bounds[1][0]) & (pds[1] < bounds[1][1]) & (
            pds[2] > bounds[2][0]) & (pds[2] < bounds[2][1])]
print(cut)

这样也可以实现裁剪点云的功能,如果要点云数据,可以使用下面这种方式再转回去

point_cloud = open3d.geometry.PointCloud()
point_cloud.points = open3d.utility.Vector3dVector(cut.to_numpy())
open3d.visualization.draw_geometries([point_cloud])

pandas后续求均值标准差等就比较简单了
整体来看open3d的耗时更少,处理速度更快,pandas处理更灵活

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值