首页 > 编程语言 >【Lidar】基于Python的Open3D库可视化点云数据

【Lidar】基于Python的Open3D库可视化点云数据

时间:2023-11-28 11:58:19浏览次数:47  
标签:show Python 网格 Lidar Open3D 可视化 点云 pcd

​1 Open3D库介绍

1.1 介绍

        Open3D是一个开源的3D数据处理库,发布于2015年,目前已经更新到0.17.0版本。它基于MIT协议开源许可,使用C++11实现,并经过高度优化,还通过Python Pybinding提供了前端Python API。 Open3D为开发者提供了一组精心选择的数据结构和算法,内部实现高度优化并设置为并行化。它处理3D数据的各种应用,包括点云、网格、体积计算、可视化、深度学习、测量和场景图等。Open3D的目标是成为一个高效,可扩展和易用的3D数据处理库。

1.2 功能

  • 点云处理:Open3D可以读取和处理各种格式的点云数据,包括PLY,XYZ,PZSD等等。此外,它还提供了一些处理点云的函数,如滤波,配准,分割等等。
  • 网格处理:Open3D可以处理三角网格数据,包括读取和处理OBJ,PLY等等格式的三角网格数据。此外,它还提供了一些处理三角网格的函数,如平滑,重建等等。
  • 体积计算:Open3D提供了计算3D体积的功能。你可以使用它来计算点云或三角网格的体积。
  • 可视化:Open3D提供了可视化的功能。你可以使用它来显示点云,三角网格等等。此外,它还提供了一些交互式的工具,如旋转,缩放等等。
  • 深度学习:Open3D提供了支持深度学习的功能。你可以使用它来实现一些深度学习的算法,如卷积神经网络(CNN),循环神经网络(RNN)等等。此外,它还提供了一些预训练的模型,如PointNet,PointNet++等等。
  • 测量:Open3D提供了测量点云或三角网格之间距离的功能。你可以使用它来测量两个点云或三角网格之间的距离,或者一个点云或三角网格到另一个点云或三角网格的距离。
  • 场景图:Open3D提供了一个场景图的功能。你可以使用它来表示和操作场景中的物体。场景图是一种数据结构,可以有效地表示和管理场景中的物体之间的关系。

2 基于Python可视化点云

        主体函数:o3d.visualization.draw_geometries([pcd], window_name='Point Cloud View', width=1920,height=1080,left=50,top=50,point_show_normal=False,mesh_show_wireframe=False, mesh_show_back_face=False)

        参数含义:显示内容、窗口标题、长、宽、左边距、右边距、是否可视化法线、是否可视化网络线框、是否可视化网络三角形背面。

# -*- coding: utf-8 -*-
"""
@Time : 2023/11/3 14:37
@Auth : RS迷途小书童
@File :Convert Raster And Vector.py
@IDE :PyCharm
@Purpose:点云可视化
"""
import open3d as o3d
import numpy as np
import matplotlib.pyplot as plt


def point_show(path, point_type):
    pcd = o3d.io.read_point_cloud(path, format=point_type, remove_nan_points=True, remove_infinite_points=True, print_progress=True)
    # 路径、输入格式、删除包含NAN的所有点、删除包含无限值的所有点、可视化进度条
    print(pcd)  # 输出点云点的个数
    print(np.asarray(pcd.points))  # 输出点的三维坐标
    """
       格式	    描述
       xyz	    每一行包含[x,y,z],其中x,y,z是三维坐标
       xyz n	每一行包含[x,y,z,nx,ny,nz],其中x,y,z是三维坐标,nx,ny,nz是法向量
       xyz rgb	每一行包含[x,y,z,r,g,b],其中x,y,z是三维坐标,r,g,b是颜色信息,取值范围是[0,1]
       pts	    第一行是表示点数的整数。随后的行遵循以下一种格式:[x,y,z,i,r,g,b],[x,y,z,r,g,b],[x,y,z,i]或[x,y,z],,其中x,y,z,i是double类型,r,g,b是un int8类型
       ply	    见:多边形文件格式,ply文件可同时包含点云和网格数据
       pcd	    见:点云数据
    """
    # pcd.paint_uniform_color([0, 1, 1])  # 固定颜色显示
    # pcd.colors = o3d.utility.Vector3dVector(np.random.uniform(0, 1, (1,3)))  # 随机颜色显示
    o3d.visualization.draw_geometries([pcd], window_name='Point Cloud View', width=1920, height=1080, left=50, top=50,
                                      point_show_normal=False, mesh_show_wireframe=False, mesh_show_back_face=False)
    # zoom=0.3412,front=[0.4257, -0.2125, -0.8795],lookat=[2.6172, 2.0475, 1.532],up=[-0.0694, -0.9768, 0.2024]
    # 显示内容、窗口标题、长、宽、左边距、右边距、是否可视化法线、是否可视化网络线框、是否可视化网络三角形背面
    o3d.io.write_point_cloud(r'1.xyz', pcd, write_ascii=False, compressed=False, print_progress=True)
    # 路径、文件、以ascii格式输出否则使用二进制输出、以压缩格式写入、可视化进度条


if __name__ == "__main__":
    Path = r'彭俊喜/433 - Cloud1 - Cloud.ply'
    Type = 'ply'
    point_show(Path, Type)

3 总结

        上诉的代码中还包含了保存点云的代码,之后如果对点云数据处理后就可以使用这个代码对数据进行保存。Open3D库是一个非常强大的点云处理库,后续我会更新更多的相关代码,如果感兴趣可以关注我。对咯!可视化的窗口是有快捷键的,但是我记不太清,R应该是重置视角,Q是退出窗口,鼠标滑轮可以控制大小,其他的我忘了。。。。。。

标签:show,Python,网格,Lidar,Open3D,可视化,点云,pcd
From: https://www.cnblogs.com/RSran/p/17861556.html

相关文章

  • python函数传参时加2个星号**作用
    一:问题下面的代码1deftest_func(*args,**kwargs):2print(f"argsType={type(args)},args={args}")3print(f"kwargsType={type(kwargs)},kwargs={kwargs}")45content1=116content2=227info={"name":&......
  • Python爬虫爬取wallhaven.cc图片
    话不多说,直接上代码!1importtime2importrandom3importuuid45fromlxmlimportetree6importos7importrequests8importthreading9fromqueueimportQueue10fromtqdmimporttqdm11fromconcurrent.futuresimportThreadPoolExecutor121......
  • python--变量和简单数据类型
    Python--变量和简单数据类型目录Python--变量和简单数据类型一、Python脚本运行过程二、变量1、变量的命名和使用2、python关键字和内置函数2.1、python关键字2.2、python内置函数3、使用变量时避免命名错误4、变量是标签三、字符串1、使用方法修改字符串的大小写2、在字符串中使......
  • python中pip下载慢或报错的解决方法
    一:问题python的pip在安装包时,有时会报错超时,排除包名写错的原因,一般这种问题是因为网络下载过慢,导致超时 二:解决方案我们可以设置pip镜像源下载,能够提升pip下载速度,解决报错问题具体操作是把全局的镜像地址设置成阿里云服务:pipconfigsetglobal.index-urlhttps://mirror......
  • 根据累进税率计算每月个人所得税 python代码
    使用时将工资、社保和公积金替换即可,累进税率表和起征点根据所在当地调整importnumpyasnp#累进税率表:交税比例及速算扣除数tax_rates={36000:{"tax_rate":0.03,"quick_deduction":0},144000:{"tax_rate":0.1,"quick_deduction":2520},300000:{&quo......
  • Python之Http服务设置跨域请求
    Http服务设置跨域请求跨域是什么就不在此进行赘述了,百度一下,你就知道。flask的处理方法flask中处理跨域很简单,只需要在flask的app对象中注册函数处理:app.after_request(after_request)其中的after_request即为处理跨域的函数,当请求处理完成,还未响应给客户端之前,flask会......
  • python pandas绘图
    pandas绘图导包importmatplotlib.pyplotasplt#进行图形绘制的常用模块。#结合Pandas和Matplotlib.pyplot,您可以在数据分析和可视化方面有更多的灵活性。折线图#折线图s=pd.Series([100,200,300,200,150,80])s.plot()使用了Pandas的Series对象,并调用了其......
  • python基础 类(二) 类的封装与属性隐藏
    封装创建一个实例对象后,事先定义在类的函数就成为该实例对象的函数即方法,事先定义在类中绑定在self上的变量成为该实例对象的数据,各个实例对象的方法和数据是互相独立的,互干扰影响类的实例对象可以调用函数即方法,这样通过方法来访问或者修改属于该实例对象的数据,就是所谓......
  • Python用偏最小二乘回归Partial Least Squares,PLS分析桃子近红外光谱数据可视化
    全文链接:https://tecdat.cn/?p=34376原文出处:拓端数据部落公众号PLS,即偏最小二乘(PartialLeastSquares),是一种广泛使用的回归技术,用于帮助客户分析近红外光谱数据。如果您对近红外光谱学有所了解,您肯定知道近红外光谱是一种次级方法,需要将近红外数据校准到所要测量的参数的主要......
  • R语言和Python对copula模型Gaussian、t、Clayton 和 Gumbel 族可视化理论概念和文献计
    原文链接:http://tecdat.cn/?p=27240 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于copula的研究报告,包括一些图形和统计输出。本文包含一些直观的示例来说明copula理论的核心概念。以下是脚本及其各自用途的简短列表:首先演示如何使用高斯copula来模拟具有任意......