in opensfm/io.py [0:0]
def reconstruction_to_json(reconstruction: types.Reconstruction) -> Dict[str, Any]:
"""
Write a reconstruction to a json object
"""
obj = {"cameras": {}, "shots": {}, "points": {}, "biases": {}}
# Extract cameras
for camera in reconstruction.cameras.values():
obj["cameras"][camera.id] = camera_to_json(camera)
# Extract cameras biases
for camera_id, bias in reconstruction.biases.items():
obj["biases"][camera_id] = bias_to_json(bias)
# Extract rig models
if len(reconstruction.rig_cameras):
obj["rig_cameras"] = {}
for rig_camera in reconstruction.rig_cameras.values():
obj["rig_cameras"][rig_camera.id] = rig_camera_to_json(rig_camera)
if len(reconstruction.rig_instances):
obj["rig_instances"] = {}
for rig_instance in reconstruction.rig_instances.values():
obj["rig_instances"][rig_instance.id] = rig_instance_to_json(rig_instance)
# Extract shots
for shot in reconstruction.shots.values():
obj["shots"][shot.id] = shot_to_json(shot)
# Extract points
for point in reconstruction.points.values():
obj["points"][point.id] = point_to_json(point)
# Extract pano_shots
if hasattr(reconstruction, "pano_shots"):
if len(reconstruction.pano_shots) > 0:
obj["pano_shots"] = {}
for shot in reconstruction.pano_shots.values():
obj["pano_shots"][shot.id] = shot_to_json(shot)
# Extract reference topocentric frame
if reconstruction.reference:
ref = reconstruction.reference
obj["reference_lla"] = {
"latitude": ref.lat,
"longitude": ref.lon,
"altitude": ref.alt,
}
return obj