建站公司网站论坛,手机连接电脑弹窗wordpress,网站建设公司需要申请icp吗,wordpress放哪最近一直在搞点云相关的操作#xff0c;有时候在处理点云数据时需要查看处理后的数据是否满足需求#xff0c;所以就想着写一套展示点云的代码。之前已经分享过如何可视化点云了#xff0c;感兴趣的可以自己去看下#xff1a;【Lidar】基于Python的Open3D库可视化点云数据。… 最近一直在搞点云相关的操作有时候在处理点云数据时需要查看处理后的数据是否满足需求所以就想着写一套展示点云的代码。之前已经分享过如何可视化点云了感兴趣的可以自己去看下【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_pathmatplotlib.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)) # 创建一个新的图形窗口设置其大小为8x4ax1 fig.add_subplot(121, projection3d) # 在图形窗口中添加一个3D绘图区域ax1.scatter(points[:, 0], points[:, 1], points[:, 2], cg, s0.01,alpha0.5) # 在这个区域中绘制点云数据的散点图设置颜色为绿色点的大小为0.01透明度为0.5ax2 fig.add_subplot(122) # 在图形窗口中添加一个2D绘图区域# 1行2列的图形布局其中该子图是第2个子图ax2.scatter(points[:, 1], points[:, 2], cg, s0.01, alpha0.5) # 在这个区域中绘制点云数据的散点图设置颜色为绿色点的大小为0.01透明度为0.5ax1.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.pcdout_path rG:\彭俊喜/1.png# 定义一个变量 out_path值为一个Windows文件路径point_show(point_path, out_path)# 调用 point_show 函数输入参数是 point_path 和 out_path效果图 3 总结 代码中的plt.savefig保存散点图时我的是一片空白不知道啥原因也懒得去改了。大家可以在绘制的散点图上直接点保存即可。总的来说这种思路实现的三维转二维完全够用至少我的需求这段代码可以实现具体为什么其他博主用方程解算啥的就看你们的需求了。