C#下将点云数据保存为PLY格式

2023-12-27 22:28

本文主要是介绍C#下将点云数据保存为PLY格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目前没有找到C#下将点云数据保存为PLY格式的库,查看了一下PLY格式,所以自己写了个方法实现点云数据保存PLY格式 

       public static string SavePointCloudToPLY(string No, float[] x, float[] y, float[] z){ string result = "";Task.Run(() =>{try{//生成3d模型string Dir1 = DateTime.Now.ToString("yyyy-MM-dd");string Dir2 = DateTime.Now.ToString("yyyy-MM-dd HH");string PreName = DateTime.Now.ToString("yyyy-MM-dd HHmmss");string ImageDir = $@"{AppDomain.CurrentDomain.BaseDirectory}Logs\Camera3DFile\{Dir1}\{Dir2}\";if (!Directory.Exists(ImageDir)){Directory.CreateDirectory(ImageDir);}string imageFile = $@"{ImageDir}{No}_{YitIdHelper.NextId()}.ply";StringBuilder stringBuilder = new StringBuilder();stringBuilder.Append("ply\n");stringBuilder.Append("format ascii 1.0\n");stringBuilder.Append($"element vertex {x.Length}\n");stringBuilder.Append("property float x\n");stringBuilder.Append("property float y\n");stringBuilder.Append("property float z\n");stringBuilder.Append("end_header\n");for (int i = 0; i < x.Length; i++){stringBuilder.Append($"{x[i]} {y[i]} {z[i]}\n");}File.WriteAllText(imageFile, stringBuilder.ToString()); }catch (Exception ex){Log.Logger.Error($" 保存点云出现异常 {ex.Message}");result = "Error";}});return result;}

 下面是将LMI gocator2350的点云数据保存为PLY

   public static string SavePointCloudToPLY(string No, SurfacePoint[] sfp){string result = "";Task.Run(() =>{try{  string Dir1 = DateTime.Now.ToString("yyyy-MM-dd");string Dir2 = DateTime.Now.ToString("yyyy-MM-dd HH");string PreName = DateTime.Now.ToString("yyyy-MM-dd HHmmss");string ImageDir = $@"{AppDomain.CurrentDomain.BaseDirectory}Logs\Camera3DFile\{Dir1}\{Dir2}\";if (!Directory.Exists(ImageDir)){Directory.CreateDirectory(ImageDir);}string imageFile = $@"{ImageDir}{No}_{YitIdHelper.NextId()}.ply";StringBuilder stringBuilder = new StringBuilder();stringBuilder.Append("ply\n");stringBuilder.Append("format ascii 1.0\n");stringBuilder.Append($"element vertex {sfp.Length}\n");stringBuilder.Append("property float x\n");stringBuilder.Append("property float y\n");stringBuilder.Append("property float z\n");stringBuilder.Append("end_header\n");for (int i = 0; i < sfp.Length; i++){stringBuilder.Append($"{sfp[i].x} {sfp[i].y} {sfp[i].z}\n");}File.WriteAllText(imageFile, stringBuilder.ToString());}catch (Exception ex){Log.Logger.Error($" 保存点云出现异常 {ex.Message}");result = "Error";}});return result;}

产生一个随机点云数据,并用Open3D显示如下效果

这篇关于C#下将点云数据保存为PLY格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/544449

相关文章

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

c# checked和unchecked关键字的使用

《c#checked和unchecked关键字的使用》C#中的checked关键字用于启用整数运算的溢出检查,可以捕获并抛出System.OverflowException异常,而unchecked... 目录在 C# 中,checked 关键字用于启用整数运算的溢出检查。默认情况下,C# 的整数运算不会自

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi