Spaces:
Running
on
Zero
Running
on
Zero
| import numpy as np | |
| import open3d as o3d | |
| class CameraPose: | |
| def __init__(self, meta, mat): | |
| self.metadata = meta | |
| self.pose = mat | |
| def __str__(self): | |
| return ("Metadata : " + " ".join(map(str, self.metadata)) + "\n" + | |
| "Pose : " + "\n" + np.array_str(self.pose)) | |
| def convert_trajectory_to_pointcloud(traj): | |
| pcd = o3d.geometry.PointCloud() | |
| for t in traj: | |
| pcd.points.append(t.pose[:3, 3]) | |
| return pcd | |
| def read_trajectory(filename): | |
| traj = [] | |
| with open(filename, "r") as f: | |
| metastr = f.readline() | |
| while metastr: | |
| metadata = map(int, metastr.split()) | |
| mat = np.zeros(shape=(4, 4)) | |
| for i in range(4): | |
| matstr = f.readline() | |
| mat[i, :] = np.fromstring(matstr, dtype=float, sep=" \t") | |
| traj.append(CameraPose(metadata, mat)) | |
| metastr = f.readline() | |
| return traj | |
| def write_trajectory(traj, filename): | |
| with open(filename, "w") as f: | |
| for x in traj: | |
| p = x.pose.tolist() | |
| f.write(" ".join(map(str, x.metadata)) + "\n") | |
| f.write("\n".join( | |
| " ".join(map("{0:.12f}".format, p[i])) for i in range(4))) | |
| f.write("\n") | |