【Lidar】基于Python的三维点云数据转二维平面+散点图绘制

这篇具有很好参考价值的文章主要介绍了【Lidar】基于Python的三维点云数据转二维平面+散点图绘制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        最近一直在搞点云相关的操作,有时候在处理点云数据时需要查看处理后的数据是否满足需求,所以就想着写一套展示点云的代码。之前已经分享过如何可视化点云了,感兴趣的可以自己去看下:【Lidar】基于Python的Open3D库可视化点云数据。但是这个是3维展示,不满足我的项目需求,我要看的是x,y平面上的效果,所以今天给大家分享一下如何使用Python将三维点云数据投影至二维平面,并进行点云图的绘制。

1 代码逻辑

        网上有很多资源都是构建投影方程、计算距离、角度啥的进行投影,我个人觉得没多大必要,我们只需要在读取/处理时只选择自己想要平面的点即可,至少我的项目可以满足。

2 完整代码

        这里创建一个一行两列的散点图,用来显示3D和2D的效果,点云保存的代码我没有加进去。看我之前的文章:【Lidar】基于Python的Open3D库、Laspy库保存点云文件/点云格式转换

# -*- coding: utf-8 -*-
"""
@Time : 2023/12/7 9:33
@Auth : RS迷途小书童
@File :Projection of point cloud to 2D.py
@IDE :PyCharm
@Purpose:点云数据投影至平面并显示
"""
import matplotlib  # 导入 matplotlib 库,主要用于绘图
import numpy as np  # 导入 numpy 库,主要用于处理数组
import open3d as o3d  # 导入 Open3D 库,用于处理点云数据
import matplotlib.pyplot as plt  # 导入 matplotlib.pyplot 库,用于创建图像和画图


def point_show(path, save_path):
    # 定义一个函数 point_show,输入参数是点云文件的路径 path 和要保存图像的路径 save_path
    matplotlib.use('tkAgg')
    # 在这里指定GUI后端,这里选择 tkAgg 作为图形用户界面后端
    pcd = o3d.io.read_point_cloud(path)
    # 使用 Open3D 读取点云数据
    print(pcd)  # 输出点云的个数
    points = np.asarray(pcd.points)
    # 将点云数据转化为 numpy 数组
    # print(points.shape)  # 输出数组的形状(行列数)
    fig = plt.figure(figsize=(16, 10))  # 创建一个新的图形窗口,设置其大小为8x4
    ax1 = fig.add_subplot(121, projection='3d')  # 在图形窗口中添加一个3D绘图区域
    ax1.scatter(points[:, 0], points[:, 1], points[:, 2], c='g', s=0.01,
                alpha=0.5)  # 在这个区域中绘制点云数据的散点图,设置颜色为绿色,点的大小为0.01,透明度为0.5
    ax2 = fig.add_subplot(122)  # 在图形窗口中添加一个2D绘图区域
    # 1行2列的图形布局,其中该子图是第2个子图
    ax2.scatter(points[:, 1], points[:, 2], c='g', s=0.01, alpha=0.5)  # 在这个区域中绘制点云数据的散点图,设置颜色为绿色,点的大小为0.01,透明度为0.5
    ax1.set_title('3D')
    ax2.set_title('2D')
    plt.show()  # 显示图形窗口中的所有内容
    plt.savefig(save_path)
    # 将图形窗口中的内容保存到指定的路径


if __name__ == "__main__":
    # 如果这个文件被直接运行而不是被导入作为模块,那么执行以下代码
    point_path = "1 - Cloud.pcd"
    # 定义一个变量 point_path,值为字符串 "1 - Cloud.pcd"
    out_path = r"G:\彭俊喜/1.png"
    # 定义一个变量 out_path,值为一个Windows文件路径
    point_show(point_path, out_path)
    # 调用 point_show 函数,输入参数是 point_path 和 out_path

效果图:

python点云实现投影到二维网格,激光雷达点云数据,python,平面,开发语言,激光点云数据,点云数据处理

3 总结

        代码中的plt.savefig保存散点图时,我的是一片空白不知道啥原因也懒得去改了。大家可以在绘制的散点图上直接点保存即可。总的来说这种思路实现的三维转二维完全够用,至少我的需求这段代码可以实现,具体为什么其他博主用方程解算啥的,就看你们的需求了。文章来源地址https://www.toymoban.com/news/detail-833287.html

到了这里,关于【Lidar】基于Python的三维点云数据转二维平面+散点图绘制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二维图像处理到三维点云处理

    下面是opencv和pcl的特点、区别和联系的详细对比表格。 特点/区别/联系 OpenCV PCL 英文全称 Open Source Computer Vision Library Point Cloud Library 语言 C++、Python、Java C++ 功能 图像处理(图像处理和分析、特征提取和描述、图像识别和分类、目标检测和跟踪等)、计算机视觉 点云处理(点云处

    2024年02月05日
    浏览(30)
  • 数据可视化——用python绘制气泡图、三维散点图、多重柱形图案例

    目录 前言 一、气泡图的绘制 1、什么是气泡图?他适用于什么数据? 2、图形效果展示 3、导入需要用到的库 4、读取要分析的数据 5、检查数据是否有问题 6、将要对比数据提取出来 7、画图 二、三维散点图的绘制 1、什么是三维散点图? 2、导入需要用到的数据库 3、画图 三

    2024年02月06日
    浏览(51)
  • [论文阅读]PillarNeXt——基于LiDAR点云的3D目标检测网络设计

    PillarNeXt: Rethinking Network Designs for 3D Object Detection in LiDAR Point Clouds 基于LiDAR点云的3D目标检测网络设计 论文网址:PillarNeXt 代码:PillarNeXt 这篇论文\\\"PillarNeXt: Rethinking Network Designs for 3D Object Detection in LiDAR Point Clouds\\\"重新思考了用于激光雷达点云3D目标检测的网络设计。主要的贡献

    2024年02月08日
    浏览(31)
  • Matlab 一种基于机载LiDAR点云电力线自动提取方法之二

    之前的方法在面对地面为水面时,由于地面点的缺失会导致电力线提取错误,因此这里使用CSF地面点滤波改进电力线的提取过程。关于CSF滤波的相关配置可以详看:Matlab CSF地面点滤波(插件),改进之后的代码如下所示。

    2024年01月19日
    浏览(28)
  • [论文阅读]MVF——基于 LiDAR 点云的 3D 目标检测的端到端多视图融合

    End-to-End Multi-View Fusion for 3D Object Detection in LiDAR Point Clouds 论文网址:MVF 论文代码: 这篇论文提出了一个端到端的多视角融合(Multi-View Fusion, MVF)算法,用于在激光雷达点云中进行3D目标检测。论文的主要贡献有两个: 提出了动态体素化(Dynamic Voxelization)的概念。相比传统的硬体素

    2024年01月23日
    浏览(34)
  • 使用Matplotlib在Python中绘制三维散点图

    什么是Matplotlib? Matplotlib是Python中的一个库,用于创建静态和动态动画,并使用其内置函数绘制。它有很多内置特性和内置分析工具,用于分析任何图形或图表。 如果我们想绘制任何三维图形,那么我们可以使用Matplotlib库。当我们有一个巨大的三维变量数据集,我们绘制它

    2024年02月12日
    浏览(31)
  • python生成24bit全彩RGB立方体的三维散点图

    生成一个 RGB 立方体的三维散点图。在这个立方体中,每个点代表一个不同的颜色,其位置由红色、绿色和蓝色通道的值决定。点的颜色则直接反映了其在 RGB 空间中的位置。 X轴代表红色通道。Y轴代表绿色通道。 Z轴代表蓝色通道。 每个点的颜色是根据其在这三个颜色通道中

    2024年01月19日
    浏览(30)
  • python根据excel数据,基于散点图绘制棋盘图

    一、需求 根据可视化的需要,下图的数据需要使用棋盘图的样式来展示, 原始数据: 最终效果图: 二、处理方式 1、先将DataFrame数据转换为Numpy数组; 2、先使用np.transpose函数,找到0和1值的索引; 3、然后创建散点图; 4、完成散点图后,由于需要展示的坐标值是文本,所以

    2024年02月16日
    浏览(32)
  • Open3D 点云投影到拟合平面:Python 实现详解

    Open3D 点云投影到拟合平面:Python 实现详解 点云是指由大量离散的 3D 点组成的几何图形,常常用于工业检测、三维建模等领域。而拟合平面是指在点云数据中找到一个最适合的平面,该平面能够近似地拟合这些点云数据。将点云投影到拟合平面可以方便地进行分析和处理。本

    2024年02月07日
    浏览(36)
  • 【CloudCompare教程】008:基于点云的三维模型重建(泊松重建)

    本文讲述基于点云的三维模型重建方法,PoissonRecon是“Poisson Surface Reconstruction”的缩写,它是由约翰霍普金斯大学的Misha Kazhdan47提出的三角形网格生成算法的简单接口。 加载兔子点云,如下图所示: 在三维模型构建之前,应先计算法向量,否则会有以下提示:点云必须具有

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包