import open3d as o3d
import numpy as np


def pcd_to_binary(pcd_file, output_file):
    pcd = o3d.io.read_point_cloud(pcd_file)
    points = np.asarray(pcd.points)
    binary_data = points[:, :3]
    with open(output_file, 'wb') as f:
        f.write(binary_data.tobytes())


# def binary_to_nparray(binary_file, output_file):
#     with open(binary_file, 'rb') as f:
#         binary_data = f.read()
#     # 将二进制数据转换为 NumPy 数组
#     point_cloud = np.frombuffer(binary_data, dtype=np.float64).reshape(-1, 3)
#     np.savetxt(output_file, point_cloud)


if __name__ == '__main__':
    pcd_to_binary(r'/home/tong/renyuan_pointcloud/4/trans/trans.pcd', r'/home/tong/renyuan_pointcloud/4/trans/pointcloud.txt')
    #pcd_to_binary(r'/home/tong/renyuan_pointcloud/3/trans/transformed_point_cloud.pcd', r'/home/tong/renyuan_pointcloud/3/trans/pointcloud.txt')
    #binary_to_nparray(r'./pointcloud.txt', r'./111123123123.txt')