open3d中点云的平移函数为:pcd.translate((tx, ty, tz), relative=True)。当relative为True时,(tx, ty, tz)表示点云平移的相对尺度,也就是平移了多少距离。当relative为False时,(tx, ty, tz)表示点云中心(质心)平移到的指定位置。质心可以坐标可以通过pcd.get_center()得到。
参考代码:
def open3d_translate():
pcd_path = r"E:\Study\Machine Learning\Dataset3d\points_pcd\cat.pcd"
pcd = open3d.io.read_point_cloud(pcd_path)
print('pcd center point: ', pcd.get_center())
pcd_translate = deepcopy(pcd)
pcd_translate.translate((50, 50, 50), relative=True)
print('pcd_translate center point: ', pcd_translate.get_center())
open3d.visualization.draw_geometries([pcd, pcd_translate], # 点云列表
window_name="Rabbit", # 窗口名称
width=800,
height=600)
ps:使用translate进行点云平移后,原始点云数据会发生变化。如果要用到平移之前的点云,那么需要复制一份原始点云进行平移变换。这里输出:
pcd center point: [ 1.05603759e-02 -5.09065193e+00 2.88664306e+01]
pcd_translate center point: [50.01056038 44.90934807 78.86643059]
?