使用open3d加载点云数据工具类

该博客介绍了一个Python工具类,用于处理点云数据。工具类包括加载不同格式的点云文件(如ply)到tensor,将其保存为ply文件,以及将点云数据进行可视化。通过使用Open3D库,可以将tensor类型的点云转换为pointcloud类型,便于网络处理和可视化。在测试类中,展示了加载、保存和显示点云文件的功能。

 设计思路:

将点云文件加载成tensor类型,用于PointNet进行处理。

将tensor类型的点云文件保存到指定的位置

将点云数据可视化

 类似于ply类型的点云文件,使用open3d读入之后,类型为pointcloud类型,需要转换成tensor类型进行网络处理。

工具类代码如下:

import open3d as o3d
import torch
import numpy


class oneFileUtils:

    # 加载单个文件
    # 不需要指定文件格式 支持自动识别 ply pcd xyz pts 等格式
    @staticmethod
    def loadFile(fileName):
        file = o3d.io.read_point_cloud(fileName)
        return torch.tensor(numpy.array(file.points))


    #保存单个文件
    @staticmethod
    def save(filePath,point_cloud):

        if(torch.is_tensor(point_cloud)):
            ply = oneFileUtils.toPoint_cloud(point_cloud)
            o3d.io.write_point_cloud(filePath, pointcloud=ply, write_ascii=True)
            return True
        return False

    @staticmethod
    # 将tensor数据转换成pointcloud类型
    def toPoint_cloud(point_cloud):
            point_cloud = point_cloud.numpy()
            ply = o3d.geometry.PointCloud()
            ply.points = o3d.utility.Vector3dVector(point_cloud)
            return ply

    # 将单个文件可视化
    @staticmethod
    def visualPointCloud(point_cloud):
        if(torch.is_tensor(point_cloud)):
            ply = oneFileUtils.toPoint_cloud(point_cloud)
            o3d.visualization.draw_geometries([ply])

 在测试类中进行测试

import torch
import warnings
import open3d
from Model_PCRNet.data_utils.OneFileUtils import oneFileUtils

warnings.filterwarnings("ignore")
file_dir = '../data/bun047.ply'  # 文件的路径

# 加载数据
pointcloud = oneFileUtils.loadFile(file_dir)
print(type(pointcloud))
oneFileUtils.visualPointCloud(pointcloud)
file_dir_2 = "../data/bun047.ply"
if(oneFileUtils.save(file_dir_2,point_cloud=pointcloud)):
    oneFileUtils.visualPointCloud(oneFileUtils.loadFile(file_dir_2))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值