在 Python 上替代 PCL 进行处理和可视化
Alternative to PCL on Python for Processing and Visualization
我正在使用 rospy
接收点云。为了处理这些点云,有一个名为 python-pcl
的包,我无法得到它 运行,因为它有很多错误且无法正常工作,Github 上有很多问题,等等。
我想知道 Python 中是否有另一个用于处理点云的库?我通过 ROS 收到点云,如下所示:
self.pointcloud_sub = rospy.Subscriber("/nerian_stereo/point_cloud", PointCloud2, self.pointcloud_cb) # get the pointcloud
def pointcloud_cb(self, scan):
# just to test, if we receive anything
points_list = []
# loop and show points
for data in pc2.read_points(scan, skip_nans=True):
points_list.append([data[0], data[1], data[2], data[3]])
print(points_list)
从现在开始,如何在不使用 PCL 库的情况下使用 ICP 处理、可视化或注册 Pointcloud。
有一个名为 "open3D" 的 python 库,它为点云处理提供了一个稳定的平台。在此处阅读文档:http://www.open3d.org/docs/
要使其与 ROS 一起使用,您需要使用 pip 作为
安装旧版本的 open3D
pip install open3d-python==0.3.0.0
我一直在使用这个库进行点云注册,没有任何问题。
由于 ROS 尚不支持此库,因此您必须编写自己的代码以在 PointCloud2 与 Opend3D.PointCloud 之间进行转换。这可以使用 numpy 轻松完成。请参阅示例 here。
我正在使用 rospy
接收点云。为了处理这些点云,有一个名为 python-pcl
的包,我无法得到它 运行,因为它有很多错误且无法正常工作,Github 上有很多问题,等等。
我想知道 Python 中是否有另一个用于处理点云的库?我通过 ROS 收到点云,如下所示:
self.pointcloud_sub = rospy.Subscriber("/nerian_stereo/point_cloud", PointCloud2, self.pointcloud_cb) # get the pointcloud
def pointcloud_cb(self, scan):
# just to test, if we receive anything
points_list = []
# loop and show points
for data in pc2.read_points(scan, skip_nans=True):
points_list.append([data[0], data[1], data[2], data[3]])
print(points_list)
从现在开始,如何在不使用 PCL 库的情况下使用 ICP 处理、可视化或注册 Pointcloud。
有一个名为 "open3D" 的 python 库,它为点云处理提供了一个稳定的平台。在此处阅读文档:http://www.open3d.org/docs/
要使其与 ROS 一起使用,您需要使用 pip 作为
安装旧版本的 open3Dpip install open3d-python==0.3.0.0
我一直在使用这个库进行点云注册,没有任何问题。
由于 ROS 尚不支持此库,因此您必须编写自己的代码以在 PointCloud2 与 Opend3D.PointCloud 之间进行转换。这可以使用 numpy 轻松完成。请参阅示例 here。