open3d,python-pcl,numpy 点云数据格式转换

open3d,python-pcl,numpy 点云数据格式转换 风清扬 2023-07-26 09:28:29 704

NumPy 转 open3d.PointCloud

参考: https://www.codenong.com/cs106756630/
numpy转open3D需要借助Vector3dVector函数,这样可以直接赋值与open3d.PointCloud.points,具体操作如下,假设(x, y, z)、(n_x, n_y, n_z)、(r, g, b)分别是一个n*3numpy数组(这三者不一定全部需要),则对于点数,法向量和颜色的转换都可以借助Vector3dVector函数,具体操作如下:

  1. import numpy as np
  2. import open3D as o3d
  3. pcd = o3d.geometry.PointCloud()
  4. pcd.points = o3d.utility.Vector3dVector(xyz)
  5. pcd.normals = o3d.utility.Vector3dVector(nxnynz)
  6. pcd.colors = o3d.utility.Vector3dVector(rgb)

open3d.PointCloud 转 NumPy

  1. import numpy as np
  2. import open3d as o3d
  3. # Load saved point cloud and visualize it
  4. pcd_load = o3d.io.read_point_cloud("../xxx.ply")#或 xxx.pcd 等常见格式
  5. # convert Open3D.o3d.geometry.PointCloud to numpy array
  6. xyz_load = np.asarray(pcd_load.points)
  7. o3d.visualization.draw_geometries([pcd_load])

numpy 数组保存为 pcd 文件

  1. import numpy as np
  2. import open3d as o3d
  3. # pointcloud_interest 为 numpy数组
  4. # pointcloud_interest =rays_end_all.numpy()
  5. pcd = o3d.geometry.PointCloud()
  6. pcd.points = o3d.utility.Vector3dVector(pointcloud_interest)
  7. # print("len(pcd.points):",len(pcd.points))#add hxz
  8. o3d.io.write_point_cloud("/home/xx/pointcloud_interest.pcd", pcd)

python pcl 点云转 numpy

  1. import pcl
  2. import numpy as np
  3. # 读取pcl 格式点云 并转换为 numpy数组
  4. pointcloud_source = pcl.load('xx.pcd')
  5. pointcloud_source_numpy = pointcloud_source.to_array()
  6. # pointcloud_source_numpy = pointcloud_source.to_array()[:, :4]

numpy 转 python pcl点云

  1. import pcl
  2. import numpy as np
  3. # 转换为 pcl 格式点云,输入点云 points_,形状(N,3)
  4. if(0): # 将 double 转换为 float32_t, 可能需要
  5. points=np.ones((points_.shape[0],3),np.float32)
  6. for i in range(points_.shape[0]):
  7. points[i][0]=points_[i][0]
  8. points[i][1]=points_[i][1]
  9. points[i][2]=points_[i][2]
  10. pointcloud_trans = pcl.PointCloud(points)# numpy 数组转 pcl
  11. if(1):
  12. pointcloud_trans = pcl.PointCloud(points_)# numpy 数组转 pcl
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
风清扬
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区