代码展示
# -*- coding:utf-8 -*-
import open3d as o3d
# 读取点云
pcd = o3d.io.read_point_cloud(
"/home/ancy/Desktop/tradition/Open3D/examples/test_data/Crop/fragment.ply")
# 读取指定裁剪多边形的json文件
vol = o3d.visualization.read_selection_polygon_volume(
"/home/ancy/Desktop/tradition/Open3D/examples/test_data/Crop/cropped.json")
# 裁剪点云
chair = vol.crop_point_cloud(pcd)
# 可视化
o3d.visualization.draw_geometries([chair],
zoom=0.7,
front=[0.5439, -0.2333, -0.8060],
lookat=[2.4615, 2.1331, 1.338],
up=[-0.1781, -0.9708, 0.1608])
cropped.json文件解析
{
"axis_max" : 4.022921085357666, # 轴最大值
"axis_min" : -0.76341366767883301, # 轴最小值
"bounding_polygon" : # 裁剪的多边形
[
[ 2.6509309513852526, 0.0, 1.6834473132326844 ],
[ 2.5786428246917148, 0.0, 1.6892074266735244 ],
[ 2.4625790337552154, 0.0, 1.6665777078297999 ],
[ 2.2228544982251655, 0.0, 1.6168160446813649 ],
[ 2.166993206001413, 0.0, 1.6115495157201662 ],
[ 2.1167895865303286, 0.0, 1.6257706054969348 ],
[ 2.0634657721747383, 0.0, 1.623021658624539 ],
[ 2.0568612343437236, 0.0, 1.5853892911207643 ],
[ 2.1605399001237027, 0.0, 0.96228993255083017 ],
[ 2.1956669387205228, 0.0, 0.95572746049785073 ],
[ 2.2191318790575583, 0.0, 0.88734449982108754 ],
[ 2.2484881847925919, 0.0, 0.87042807267013633 ],
[ 2.6891234157295827, 0.0, 0.94140677988967603 ],
[ 2.7328692490470647, 0.0, 0.98775740674840251 ],
[ 2.7129337547575547, 0.0, 1.0398850034649203 ],
[ 2.7592174072415405, 0.0, 1.0692940558509485 ],
[ 2.7689216419453428, 0.0, 1.0953914441371593 ],
[ 2.6851455625455669, 0.0, 1.6307334122162018 ],
[ 2.6714776099981239, 0.0, 1.675524657088997 ],
[ 2.6579576128816544, 0.0, 1.6819127849749496 ]
],
"class_name" : "SelectionPolygonVolume", # 使用的类函数
"orthogonal_axis" : "Y", # 正交轴
"version_major" : 1, # 版本号
"version_minor" : 0
}