Files
nerfstudio/lantern_scripts/deal_with_openSFM.py
T
2024-03-27 14:34:05 -04:00

42 lines
1.2 KiB
Python

import numpy as np
import argparse
import json
def read_json_file(path):
with open(path) as f:
data = json.load(f)
camera_dict = {}
camera_dict_file = './transform.json'
camera_dict["frames"] = []
for img_name in data[0]['shots']:
rvec = np.array(tuple(map(float, data[0]['shots'][img_name]['rotation'])))
tvec = np.array(tuple(map(float, data[0]['shots'][img_name]['translation'])))
from scipy.spatial.transform import Rotation as R
rot = R.from_rotvec(rvec).as_matrix()
W2C = np.eye(4)
W2C[:3, :3] = rot
W2C[:3, 3] = np.array(tvec)
camera_dict["frames"].append(
{
"file_path": img_name,
"transform_matrix": W2C.tolist()
}
)
with open(camera_dict_file, 'w') as fp:
json.dump(camera_dict, fp, indent=2, sort_keys=True)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Read and write COLMAP binary and text models')
parser.add_argument('--input_model', help='path to input model folder')
args = parser.parse_args()
read_json_file(args.input_model)