sarlinpe · GitHub

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)

Read the original on github.com ↗