首页 > 其他分享 >使用Open3D库绘制点云

使用Open3D库绘制点云

时间:2022-10-06 16:00:11浏览次数:50  
标签:fx cy Open3D 点云 pointcloud 绘制 o3d

   Open3D是一个开源库,支持快速开发处理3D数据的软件。Open3D后端是用C++实现的,经过高度优化并通过python的前端接口公开。Open3D提供了三种数据结构:点云(point cloud)、网格(mesh)和RGB-D图像。

本次实验使用Open3D开源库将深度图和原图生成三维点云数据,然后将点云可视化,截取3张不同角度的三维点云,遇到的问题是点云呈锥形状,后续还得再学习下Open3D库的使用。

 

 

 

 

 

 

 

代码如下:

# =====================================
    # ===使用open3d库绘制点云
    # 读取原图和深度图
    colorImage = o3d.io.read_image('./img/A0.png')
    depthImage = o3d.io.read_image('./data/DepthMapAdirondack.png')

    # 创建rgbd图像
    rgbdImage = o3d.geometry.RGBDImage().create_from_color_and_depth(colorImage, depthImage, depth_scale=1000.0,
                                                                     depth_trunc=3, convert_rgb_to_intensity=False)
    # 相机内参
    intrinsics = o3d.camera.PinholeCameraIntrinsic()
    # fx = Q[2, 3]
    # fy = Q[2, 3]
    # cx = Q[0, 3]
    # cy = Q[1, 3]
    fx = config.cam_matrix_left[0, 0]
    fy = fx
    cx = config.cam_matrix_left[0, 2]
    cy = config.cam_matrix_left[1, 2]
    print(fx, fy, cx, cy)
    # 获取相机内参
    intrinsics.set_intrinsics(width, height, fx=fx, fy=fy, cx=cx, cy=cy)
    # 外参
    extrinsics = np.array([[1., 0., 0., 0.],
                           [0., 1., 0., 0.],
                           [0., 0., 1., 0.],
                           [0., 0., 0., 1.]])
    # 生成point cloud 点云数据结构
    # 不兼容的函数参数? 解决:不要外参,函数默认已给
    pointcloud = o3d.geometry.PointCloud().create_from_rgbd_image(rgbdImage, intrinsic=intrinsics)
    # 翻转点云
    pointcloud.transform([[1, 0, 0, 0],
                          [0, -1, 0, 0],
                          [0, 0, -1, 0],
                          [0, 0, 0, 1]])
    # 将pcd点云保存
    o3d.io.write_point_cloud('./data/pcdAdirondackZheng.pcd', pointcloud=pointcloud)
    # 可视化点云
    o3d.visualization.draw_geometries([pointcloud], width=720, height=480)
    sys.exit(0)

参考博客:https://blog.csdn.net/dulingwen/article/details/98071584,侵删

 

标签:fx,cy,Open3D,点云,pointcloud,绘制,o3d
From: https://www.cnblogs.com/xiejb2430/p/16757779.html

相关文章

  • 汇总|3D点云目标检测算法
    前言前面总结了几种基于激光雷达点云数据的3D目标检测算法,还有一些算法不再单独列出,这里做个简单总结来分享下!基于激光雷达点云的3D目标检测算法1、End-to-EndMulti-ViewF......
  • FusionNet:基于稀疏雷达点云和RGB图像的深度图补全
    原文链接:http://arxiv.org/abs/1902.05356v1代码链接:https://github.com/wvangansbeke/Sparse-Depth-Completion主要思想本文提出了一种新的基于RGB图像的稀疏LiDAR点云深度......
  • 3D点云two-stage目标检测方法优化综述
    前言和二维图像目标检测一样,3D点云目标检测除了按照输入模态划分为基于点云、基于单目、基于双目或者是多模态融合的方法。也可以按照对proposal的提出和优化分为one-stage......
  • Flask 框架:运用Echarts绘制图形
    echarts是百度推出的一款开源的基于JavaScript的可视化图表库,该开发库目前发展非常不错,且支持各类图形的绘制可定制程度高,Echarts绘图库同样可以与Flask结合,前台使用echart......
  • CAD交互绘制块引用对象(网页版)
    主要用到函数说明:_DMxDrawX::DrawBlockReference绘制块引用对象。详细说明如下:参数说明DOUBLEdPosX插入点的X坐标DOUBLEdPosY插入点的Y坐标BSTRpszBlkName图块名DOUBLEd......
  • 基于旋转轮廓的点云局部浮点型和二值化特征描述(RCS)
    本次介绍一个发表于ComputerVisionandImageUnderstanding的经典三维点云描述子RCS。论文地址:JiaqiYang,QianZhang,KeXian,YangXiao,ZhiguoCao,“Rotationalco......
  • 自适应采样非局部神经网络的点云鲁棒操作
    原始点云数据不可避免地从3D传感器或在重建算法中包含异常值。本文提出了一种用于鲁棒点云处理的新型端到端网络,称为PointASNL,可以有效地处理带噪声的点云。我们方法中的关......
  • 绘制几何体(实现)
    概述本篇运用classD3DApp、vertex、inputLayout、vertexBuffer、indexBuffer、constantBuffer、pixelShader、vertexShader、CompileFromFile、rootSignature、descripto......
  • 既可生成点云又可生成网格的超网络方法 ICML
    本文发表在ICML2020中,题目是Hypernetworkapproachtogeneratingpointclouds。利用超网络(hypernetworks)提出了一种新颖的生成3D点云的方法。与现有仅学习3D对象的表......
  • ImGUI 1.87 绘制D3D外部菜单
    ImGUI它是与平台无关的C++轻量级跨平台图形界面库,没有任何第三方依赖,可以将ImGUI的源码直接加到项目中使用,该框架通常会配合特定的D3Dx9等图形开发工具......