Я пытаюсь записать некоторые данные точек xyz в файл .ply, используя python.
Я использую здесь этот скрипт, который в основном записывает pandas DataFrame в двоичный формат с помощью метода повторного ввода и numpy tobytes()
:
import pandas as pd
import numpy as np
pc = pd.read_csv('points.txt')
with open('some_file.ply', 'w') as ply:
ply.write("ply\n")
ply.write('format binary_little_endian 1.0\n')
ply.write("comment Author: Phil Wilkes\n")
ply.write("obj_info generated with pcd2ply.py\n")
ply.write("element vertex {}\n".format(len(pc)))
ply.write("property float x\n")
ply.write("property float y\n")
ply.write("property float z\n")
ply.write("end_header\n")
pc[['x', 'y', 'z']] = pc[['x', 'y', 'z']].astype('f4')
ply.write(pc[['x', 'y', 'z']].to_records(index=False).tobytes())
Этот скрипт работаетхорошо на моем Mac и программное обеспечение, как CloudCompare может прочитать его;однако, когда я использую тот же сценарий на компьютере с Windows, CloudCompare может читать информацию заголовка, но маркирует двоичный контент.
Когда я читаю версию текстового файла в CloudCompare и выводит в виде двоичного файла как Linux, так и Windowsверсии могут его читать, но содержимое файла отличается.
Здесь - версия, созданная с помощью вышеуказанного сценария, здесь - версия, созданная CloudCompare для Windows. здесь - необработанные данные.