open3d可视化窗口中旋转点云并保存为ply或pcd文件

open3d中读取点云之后,在可视化窗口中任意视角旋转点云,旋转之后的点云都无法直接保存为ply或者pcd文件。举个例子,下面图片中我想将正视角拍摄的树点云镜像翻转,保存翻转之后的点云为ply文件

open3d可视化窗口中旋转点云并保存为ply或pcd文件_第1张图片
open3d可视化窗口中旋转点云并保存为ply或pcd文件_第2张图片
接下来说如何操作
open3d打开点云文件并可视化,在可视化窗口中任意旋转点云,比如我想得到镜像翻转的点云,我就对源点云镜像旋转。然后在可视化窗口中点击P键,这里P键为可控组件,目的是保存旋转之后的视角参数json文件,打开json文件你会看到里面有个extrinsic参数,为4×4矩阵,这个矩阵就是我们需要的,将此矩阵作为旋转平移矩阵,对源点云进行变换

import open3d ad 03d
import copy

pcd = o3d.io.read_point_cloud('E:/py-pcd/dianyunxia/crop/crop22_filter.ply')
param = o3d.io.read_pinhole_camera_parameters('E:/py-pcd/ScreenCamera_2022-04-28-09-10-49.json')
pcd_temp = copy.deepcopy(pcd)
params =  param.extrinsic
pcd_temp.transform(params)
o3d.io.write_point_cloud("E:/py-pcd/dianyunxia/crop/crop33_temp.ply", pcd_temp)
o3d.visualization.draw_geometries([pcd_temp])

运行完这段代码,可视化变换之后的点云时结果如下
open3d可视化窗口中旋转点云并保存为ply或pcd文件_第3张图片这与我们想得到的镜像翻转点云不同,所以只需要在最初操作的时候在可视化窗口中将源点云旋转到图三点云视角,并按P键保存json文件,之后重新运行代码,结果就会变成图二镜像翻转的点云,并且可以进行保存

你可能感兴趣的:(python)