【问题标题】:How to check certain coordinates on a point cloud / 3d object?如何检查点云/ 3d 对象上的某些坐标?
【发布时间】:2019-11-20 03:05:50
【问题描述】:

我有一个人体的点云和它的 3D 扫描。我有一些骨骼关节的坐标,但我想检查坐标是否适合身体/点云。

我曾尝试使用 python open3d 和 pangolin c++ 做到这一点,但我不知道如何做到这一点。

我有一个点的 X、Y、Z 坐标,我想看看它在我的点云中的位置。为了解释我的问题,我有一个用油漆完成的示例图像。

我需要关于我可以用来做什么的建议。

【问题讨论】:

  • 如果你可以从点云重建一个凹壳,你可以从你的测试点射出一条射线到一个随机的位置并计算三角形交点的数量。如果奇怪,你就在船体内。
  • 你可以使用pcl::octree::OctreePointCloudSearch类和voxelSearch函数。如果给定点在体素内,则函数将返回true,否则返回false
  • @Botje 我会努力的,谢谢
  • @kanstar 好的,我会试试的。我也不知道如何将 pcl 与 python 一起使用,但它可以与 c++ 一起使用。你为 pcl 推荐什么语言?
  • 我也想看到我的点的确切位置,就像在图片中一样。我想看看是在手上、头上还是胸前等。

标签: python c++ image-processing 3d point-cloud-library


【解决方案1】:

这取决于您是要目视检查还是自动检查。

使用 Open3D 很容易进行目视检查(至少,安装比 PCL-Python 容易得多)

首先,您需要安装 open3d 软件包。然后通过以下方式阅读您的点云:

import open3d as o3d
pcd = o3d.io.read_point_cloud(file_path)

然后在 o3d 中生成两个红色点云:# 我认为你的 x(3,1) 表示两个点的 x

import numpy as np

pcd_red = o3d.geometry.PointCloud()

xyz = np.asarray([[3, 2, 8],
                  [1, 8, 3]])

pcd_red.points = o3d.utility.Vector3dVector(xyz)

# paint them to red
pcd_red.paint_uniform_color([1, 0, 0])

最后是展示:

o3d.visualization.draw_geometries([pcd, pcd_red])

【讨论】:

    猜你喜欢
    • 2018-08-31
    • 2015-08-25
    • 2018-01-07
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    相关资源
    最近更新 更多