首页 > 编程语言 >点云数据(激光雷达)显示python代码

点云数据(激光雷达)显示python代码

时间:2022-11-15 15:37:06浏览次数:54  
标签:mlab python os velodyne np 点云 path root 激光雷达

  点云数据显示是查看点云数据及感性认识必不可少的一个环节。因为在实际场景中,可能会涉及到很多的算法步骤,处理结果是不是我们自己想要的,就需要查看点云数据。

为此,我将以此博客记录如何使用python代码实现点云数据的显示,如下:

 

复制即可使用代码如下:

import numpy as np
import mayavi.mlab
import os
def build_dir(root):
    if not os.path.exists(root):
        os.makedirs(root)
    return root
def visul_velodyne(velodyne_root, save_path=None, show=False):
    # 000010.bin这里需要填写文件的位置
    pointcloud = np.fromfile(velodyne_root, dtype=np.float32, count=-1).reshape([-1, 4])
    print(pointcloud.shape)
    x = pointcloud[:, 0]  # x position of point
    y = pointcloud[:, 1]  # y position of point
    z = pointcloud[:, 2]  # z position of point
    r = pointcloud[:, 3]  # reflectance value of point
    d = np.sqrt(x ** 2 + y ** 2)  # Map Distance from sensor
    vals = 'height'
    if vals == "height":
        col = z
    else:
        col = d
    fig = mayavi.mlab.figure(bgcolor=(0, 0, 0), size=(640, 500))
    # fig = mayavi.mlab.figure(bgcolor=(0, 0, 0), size=(1908, 1024))
    mayavi.mlab.points3d(x, y, z,
                         col,  # Values used for Color
                         mode="point",
                         colormap='spectral',  # 'bone', 'copper', 'gnuplot'
                         # color=(0, 1, 0),   # Used a fixed (r,g,b) instead
                         figure=fig,
                         )
    x = np.linspace(5, 5, 50)
    y = np.linspace(0, 0, 50)
    z = np.linspace(0, 5, 50)
    mayavi.mlab.plot3d(x, y, z)
    if save_path is not None:
        mayavi.mlab.savefig(filename=save_path)  # 保存图片 filename为“.../../*.png”
    if show:
        mayavi.mlab.show()

if __name__ == '__main__':
    velodyne_file = r'F:\ThrDet\data\kitti_d\training\velodyne'
    for name in os.listdir(velodyne_file):
        if name[-3:] == 'bin':
            velodyne_root = os.path.join(velodyne_file, name)
            out_dir = build_dir(os.path.join(velodyne_file, 'out_dir'))
            save_path = os.path.join(out_dir, name[:-3] + 'png')
            visul_velodyne(velodyne_root, save_path=save_path, show=True)

 

 

代码测试结果显示如下:

 

 

 

标签:mlab,python,os,velodyne,np,点云,path,root,激光雷达
From: https://www.cnblogs.com/tangjunjun/p/16892530.html

相关文章

  • python知识
    Python由荷兰数学和计算机科学研究学会的GuidovanRossum于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程......
  • python发送邮件
    python发送邮件代码如下importsmtplibfromemail.mime.textimportMIMETextfromemail.headerimportHeader#引入email函数,smtp协议,需要在申请的邮箱打开SMTP协议,获取......
  • sb Python
    Linux多进程tempfile读取异常,不知道原因是什么!!!!Linux下运行一遍就知道了frommultiprocessingimportProcess,PipefromtempfileimportTemporaryFileimporttime......
  • python基础学习
     前言最近几年Python被吹的神乎其神,很多同学都不清楚Python到底能干什么?就盲目去学习Python,今天我就Python的应用领域来简单盘点一下,让想学习Python的同学找对方向不迷......
  • python三十四期--
    后续内容概要网络编程(2d)并发编程(3d)MySQL数据库(5d)仿优酷系统(3d~5d)前端基础(7d)django框架(12d)仿博客园系统(3d~5d)djangodrf商城项目期终架构部分常......
  • python, 解决:WARNING: Running pip as the 'root' user can result in broken permiss
    在使用pip过程中,如果出现如下提示:  则可以先CD进入Python安装目录,执行以下指令:假设Python3安装在/usr/local/python3cd/usr/local/python3python3-mvenvtut......
  • python笔记74- yaml 使用特殊符号| 解决字符串带换行的问题
    前言在yaml文件中通过字符串写一行,如果字符串需要换行的,可以使用yaml中的特殊符号|和>。管道符||这个控制符的作用是保留文本每一行尾部的换行符"\n",等效于|+。|+......
  • python当中匿名函数lambda使用
    什么是匿名函数?匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。在python中,不通过def来声明函数名字,而是通......
  • python-元组、列表、字典
    python-元组、列表、字典一、元组"""python元组tuple不可变,不支持删除,添加,修改值:1、创建空元组,创建一个元素的元组(一个元素后加英文逗号)。2、通过索引获取使用......
  • Python取余/求余(%)问题,负数求余最简单的解释
      Python求余中会犯的错误思想如下:    一.忘记求商结果是负数时要向下取整,比如-2.25等于-3。    二.是把负数求余运算和正数求余运算混为一谈  ......