open3d点云变换

将点云平移到点云中心

import os
import numpy as np
import  io_ply
from tqdm import tqdm
import open3d as o3d

root_original = '../data/original'
root_train = '../data/train'
rooms = sorted(os.listdir(root_original)) #获取文件夹下所有的文件和文件夹名称
rooms = [room for room in rooms if 'model_' in room]
rooms_split = [room for room in rooms if not 'model_{}'.format(5) in room]

for room_name in tqdm(rooms_split, total=len(rooms_split)):
    room_path = os.path.join(root_original, room_name)
    #print(room_path)
    room_data = io_ply.read_ply(room_path)
    points = room_data['coords']
    colors = room_data['colors']/255
    centroid_A = np.mean(points, axis=0)
    print(centroid_A)
    #归到点云中心
    AA = points - centroid_A
    # 创建Open3D的点云对象
    point_cloud = o3d.geometry.PointCloud()
    point_cloud.points = o3d.utility.Vector3dVector(AA)
    point_cloud.colors = o3d.utility.Vector3dVector(colors)
    # 可视化点云
    o3d.visualization.draw_geometries([point_cloud])
    #print(points.shape)# 输出数组的形状(行列数)

    coord_min, coord_max = np.amin(AA, axis=0)[:3], np.amax(AA, axis=0)[:3]
    transfrom_path = os.path.join(root_train, room_name)
    o3d.io.write_point_cloud(transfrom_path, point_cloud, 'auto', False)

 

posted @ 2025-02-08 18:05  太一吾鱼水  阅读(24)  评论(0)    收藏  举报