首页 > 其他分享 >open3d保存的ply文件乱码

open3d保存的ply文件乱码

时间:2023-11-28 21:11:18浏览次数:77  
标签:write point ply 乱码 depth open3d file cloud

出现的问题

1)我的代码如下

import cv2
import open3d as o3d
import numpy as np
import matplotlib.pyplot as plt
from plyfile import PlyData, PlyElement
if __name__ == '__main__':
depth = o3d.t.io.read_image('D:/biaoding/lion/depth_5.png')
# print(np.array(depth))
intrinsic = o3d.core.Tensor([[365.7593, 0, 254.2594], [0, 365.7593, 204.1283],
[0, 0, 1]])
pcd = o3d.t.geometry.PointCloud.create_from_depth_image(depth,
intrinsic,
depth_scale=4000.0,
depth_max=0.8)
point_cloud_array = pcd.point.positions.numpy()
   pcd1 = o3d.geometry.PointCloud()
   pcd1.points = o3d.utility.Vector3dVector(point_cloud_array)
   o3d.io.write_point_cloud("depth.ply", pcd1)
2)我的.ply文件打开的样子

原因和解决方案:

       在保存PLY文件时,Open3D默认使用二进制格式,并且不提供直接指定编码方式的选项。在保存多维数组作为点云数据时,可以使用numpy.savetxt()函数将数据以ASCII格式保存到文件中。然后,使用open()函数以ASCII编码打开文件,并将数据逐行写入PLY文件。

解决代码:

# 以ASCII格式保存点云数据到文件
np.savetxt('point_cloud.txt', point_cloud_array, delimiter=' ', fmt='%.6f')

# 打开文件并逐行写入PLY文件
with open('point_cloud.txt', 'r', encoding='ascii') as file:
lines = file.readlines()
num_points = len(lines)

# 创建PLY文件并写入头信息
with open('point.ply', 'w', encoding='ascii') as ply_file:
ply_file.write('ply\n')
ply_file.write('format ascii 1.0\n')
ply_file.write('element vertex {}\n'.format(num_points))
ply_file.write('property float x\n')
ply_file.write('property float y\n')
ply_file.write('property float z\n')
ply_file.write('end_header\n')

# 逐行写入点云数据
for line in lines:
ply_file.write(line)

 

 

 

标签:write,point,ply,乱码,depth,open3d,file,cloud
From: https://www.cnblogs.com/xmyingg/p/17863082.html

相关文章

  • 【Lidar】基于Python的Open3D库可视化点云数据
    ​1Open3D库介绍1.1介绍        Open3D是一个开源的3D数据处理库,发布于2015年,目前已经更新到0.17.0版本。它基于MIT协议开源许可,使用C++11实现,并经过高度优化,还通过PythonPybinding提供了前端PythonAPI。 Open3D为开发者提供了一组精心选择的数据结构和算法,内部实......
  • SecureCRT解决中文显示乱码
    解决步骤:一、点击Option-->GlobalOption-->Defaultsession-->EditDefaultsession-->参考下图设置。、 二、点击上图Font,参考下图设置(选其他英文字体不一定能正常显示中文) 三、如果还不行,重新打开一个新窗口。翻译搜索复制......
  • Xshell终端中文乱码解决方法
    Xshell是用于远程连接Linux的终端软件。使用过程中会出险乱码的问题,主要原因是Xshll与Linux编码不一致导致的。解决办法如下:使用locale命令查看Liunx编码;修改Xshell编码选择会话,鼠标右键点击属性;选择“终端”,选择与Linux一致的编码;确定,重新连接Linux全文完......
  • Navicat中出现中文乱码解决办法
    问题:Navicat中出现中文乱码怎么办? 解决办法:1、选择数据库右键编辑连接 2、选择高级,在编码那栏点击下拉箭头 3、选择自动后点击确定 4、开始链接即可 ......
  • 如何解决js地址栏中传递中文乱码的问题
    首先,地址栏传中文是很不明智的,因为不同的浏览器对与中文的解析存在不同的方法。所以,建议如果能不用尽量不要用。当然,很多时候奇葩需求要求我们必须解决这个办法。下面,是解决个别奇葩需求的方法。在中文参数加入到地址栏之前进行转码。(注意,简单转码是不可以的,浏览器会根据编码......
  • Applying sewage charging system to deal with water pollution problem in Russia.
    Whatisthe sewage charging system? Although manufacturing has always been a key driving force for China's economic growth, it is also the root cause of water pollution. In the face of rapid industrialization, China has take......
  • C# 使用执行cmd命令遇到俄语乱码处理
     设置执行cmd命令的ProcessStartInfo对象编码使用System.Text.Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);注册更多字符编码。通过上面的方式,如果把语言项的Beta版:使用UnicodeUTF-8提供全球语言支持的选择去掉则正常。但是该功能用于修复日志输出还有......
  • IDEA控制台输出中文乱码
    1.问题如下图,我使用的文件编码格式为UFT-8,这里会出现中文乱码的问题。且我并不方便直接修改全局文件编码格式,有可能会造成未知错误。2.解决参考链接:IDEA控制台中文乱码4种解决方案2.1选中要运行的项目,并点击编辑配置2.2在VM选项中加入-Dfile.encoding=GBK选项即可......
  • Charles抓https包内容显示乱码
    抓https包内容显示乱码原因:1.在电脑上安装SSL证书。2.要在模拟器或移动设备(手机、平板)安装SSL证书。3.Android7以前安装证书后就可以正常抓包;Android7以后,需要把证书添加到系统证书才行。4.有些APK会检查是否有Charles这类抓不包软件,如果有就跳过用。......
  • C++ 程序数据传输到动态库后,出现乱码
    程序结构体和动态库结构体如下structVehInfo{ intID; intlaneId; VEHSTATEvehstate; intleftX; intrightX; intleftXSignal;//单车道的左位置 intrightXSignal;//单车道的右位置 intvehLen; intvehWidth; intvehHeight; /*****************************......