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)
作者:太一吾鱼水
文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。
欢迎大家留言交流,转载请注明出处。