{
"camera": {
"h": 600,
"w": 1200,
"fx": 600,
"fy": 600,
"cx": 599.5,
"cy": 339.5,
"scale": 6553.5
}
}
import torch
def get_intrinsic(w,h,fx,fy,cx,cy):
cx = cx if cx > 0 else w / 2
cy = cy if cy > 0 else h / 2
intrinstic = torch.tensor([[fx, 0, cx], [0, fy, cy], [0, 0, 1]], dtype=torch.float32)
return intrinstic
if __name__=="__main__":
# {
# "camera": {
# "h": 600,
# "w": 1200,
# "fx": 600,
# "fy": 600,
# "cx": 599.5,
# "cy": 339.5,
# "scale": 6553.5
# }
# }
intrinstic=get_intrinsic(1200,600,600,600,599.6,339.5)
print("finish")
如果给的是FoVx和FoVy,那么通过如下公式计算得到fx,fy
fx, fy = fov2focal(FoVx, w), fov2focal(FoVy, h)
def fov2focal(fov, pixels):
return pixels / (2 * math.tan(fov / 2))