首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点云内部的open3d高亮点

点云内部的open3d高亮点
EN

Stack Overflow用户
提问于 2021-06-17 09:18:32
回答 2查看 998关注 0票数 0

我使用以下函数绘制了一个点云:

代码语言:javascript
复制
def plot_pointcloud(points):
    xyz = points[:, :3]
    pcd = o3d.geometry.PointCloud()
    pcd.points = o3d.utility.Vector3dVector(xyz)
    # pcd.colors = o3d.utility.Vector3dVector(points[:, -1])
    o3d.visualization.draw_geometries([pcd])  # Uncomment this to see the plot

不过,我有两个问题:

  1. 我在这个点云中有4个点,我想突出显示,也就是用matplotlib将这些点绘制成不同的形状(就像星星(*))。每个点都有x,y,z坐标。
  2. 我也想在这个点云里面画一个长方体。我知道长方体的质心以及长方体的长度、宽度和高度。我试着使用http://www.open3d.org/docs/latest/tutorial/Basic/visualization.html geometry_primitives,但是我无法让它工作。

会很感激你的帮助。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-09-06 13:47:00

为了突出你的四个点,你可以创建第二个点云,并给第一个不同的颜色。

代码语言:javascript
复制
base_point_cloud = o3d.geometry.PointCloud()
picked_point_cloud = o3d.geometry.PointCloud()
base_point_cloud.points = o3d.utility.Vector3dVector(base_3d_pts)
picked_point_cloud.points = o3d.utility.Vector3dVector(picked_3d_pts)
picked_point_cloud.colors = o3d.utility.Vector3dVector(picked_3d_pts)
o3d.visualization.draw_geometries([picked_point_cloud, point_cloud, axis_mesh])

其中base_3d_pts和picked_3d_pts是numpy数组中的3D点。

下面显示了一个截图示例:

点云选择点

票数 0
EN

Stack Overflow用户

发布于 2022-05-18 13:25:12

您可以创建这样的函数并将其传递给它。

代码语言:javascript
复制
def create_geometry_at_points(points):
    geometries = o3d.geometry.TriangleMesh()
    for point in points:
        sphere = o3d.geometry.TriangleMesh.create_sphere(radius=0.005) #create a small sphere to represent point
        sphere.translate(point) #translate this sphere to point
        geometries += sphere
    geometries.paint_uniform_color([1.0, 0.0, 0.0])
    return geometries

然后打电话:

代码语言:javascript
复制
highlight_pnts = create_geometry_at_points(pcd.points)
o3d.visualization.draw_geometries([pcd, highlight_pnts])

用点绘制立方体:

代码语言:javascript
复制
box = o3d.geometry.TriangleMesh.create_box(width=1.0, height=1.0, depth=1.0, create_uv_map=False, map_texture_to_each_face=False)
box.translate(centre point for box)
o3d.visualization.draw_geometries([pcd, highlight_pnts, box])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68016435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档