in opensfm/io.py [0:0]
def camera_to_json(camera) -> Dict[str, Any]:
"""
Write camera to a json object
"""
if camera.projection_type == "perspective":
return {
"projection_type": camera.projection_type,
"width": camera.width,
"height": camera.height,
"focal": camera.focal,
"k1": camera.k1,
"k2": camera.k2,
}
elif camera.projection_type == "brown":
return {
"projection_type": camera.projection_type,
"width": camera.width,
"height": camera.height,
"focal_x": camera.focal,
"focal_y": camera.focal * camera.aspect_ratio,
"c_x": camera.principal_point[0],
"c_y": camera.principal_point[1],
"k1": camera.k1,
"k2": camera.k2,
"p1": camera.p1,
"p2": camera.p2,
"k3": camera.k3,
}
elif camera.projection_type == "fisheye":
return {
"projection_type": camera.projection_type,
"width": camera.width,
"height": camera.height,
"focal": camera.focal,
"k1": camera.k1,
"k2": camera.k2,
}
elif camera.projection_type == "fisheye_opencv":
return {
"projection_type": camera.projection_type,
"width": camera.width,
"height": camera.height,
"focal_x": camera.focal,
"focal_y": camera.focal * camera.aspect_ratio,
"c_x": camera.principal_point[0],
"c_y": camera.principal_point[1],
"k1": camera.k1,
"k2": camera.k2,
"k3": camera.k3,
"k4": camera.k4,
}
elif camera.projection_type == "fisheye62":
return {
"projection_type": camera.projection_type,
"width": camera.width,
"height": camera.height,
"focal_x": camera.focal,
"focal_y": camera.focal * camera.aspect_ratio,
"c_x": camera.principal_point[0],
"c_y": camera.principal_point[1],
"k1": camera.k1,
"k2": camera.k2,
"k3": camera.k3,
"k4": camera.k4,
"k5": camera.k5,
"k6": camera.k6,
"p1": camera.p1,
"p2": camera.p2,
}
elif camera.projection_type == "fisheye624":
return {
"projection_type": camera.projection_type,
"width": camera.width,
"height": camera.height,
"focal_x": camera.focal,
"focal_y": camera.focal * camera.aspect_ratio,
"c_x": camera.principal_point[0],
"c_y": camera.principal_point[1],
"k1": camera.k1,
"k2": camera.k2,
"k3": camera.k3,
"k4": camera.k4,
"k5": camera.k5,
"k6": camera.k6,
"p1": camera.p1,
"p2": camera.p2,
"s0": camera.s0,
"s1": camera.s1,
"s2": camera.s2,
"s3": camera.s3,
}
elif camera.projection_type == "simple_radial":
return {
"projection_type": camera.projection_type,
"width": camera.width,
"height": camera.height,
"focal_x": camera.focal,
"focal_y": camera.focal * camera.aspect_ratio,
"c_x": camera.principal_point[0],
"c_y": camera.principal_point[1],
"k1": camera.k1,
}
elif camera.projection_type == "radial":
return {
"projection_type": camera.projection_type,
"width": camera.width,
"height": camera.height,
"focal_x": camera.focal,
"focal_y": camera.focal * camera.aspect_ratio,
"c_x": camera.principal_point[0],
"c_y": camera.principal_point[1],
"k1": camera.k1,
"k2": camera.k2,
}
elif camera.projection_type == "dual":
return {
"projection_type": camera.projection_type,
"width": camera.width,
"height": camera.height,
"focal": camera.focal,
"k1": camera.k1,
"k2": camera.k2,
"transition": camera.transition,
}
elif pygeometry.Camera.is_panorama(camera.projection_type):
return {
"projection_type": camera.projection_type,
"width": camera.width,
"height": camera.height,
}
else:
raise NotImplementedError