On failure, pycolmap.estimate_triangulation results in a segfault. It seems that we need the GIL to return None. I'm applying this changes to other estimators to be safe.
import pycolmap cameras = [ pycolmap.Camera( camera_id=0, model="PINHOLE", height=1036, width=1555, params=[859.32184536, 858.57313073, 781.67182929, 516.495726], ), ] * 2 images = [ pycolmap.Image( image_id=1, camera_id=0, name="DSC_0223.png", cam_from_world=pycolmap.Rigid3d() ), pycolmap.Image( image_id=2, camera_id=0, name="DSC_0229.png", cam_from_world=pycolmap.Rigid3d( pycolmap.Rotation3d([0.0518192, 0.122425, -0.0879664, 0.987213]), [-0.240158, -0.370212, -0.897367], ), ), ] kp0_i = [1450.0, 662.0] kp1_i = [1443.0, 650.0] pointdata = [ pycolmap.PointData(kp0_i, cameras[0].cam_from_img(kp0_i)), pycolmap.PointData(kp1_i, cameras[1].cam_from_img(kp1_i)), ] tri_options = pycolmap.EstimateTriangulationOptions( ransac=pycolmap.RANSACOptions(max_error=10), min_tri_angle=0 ) out = pycolmap.estimate_triangulation(pointdata, images, cameras, tri_options) print(out)