From 8637392e067aa63794d21c8713088f8217329ece Mon Sep 17 00:00:00 2001 From: B1ueber2y Date: Wed, 18 Dec 2024 15:48:48 +0100 Subject: [PATCH 1/2] Add copy constructor support for solver-related ceres bindings --- src/pycolmap/estimators/ceres_bindings.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pycolmap/estimators/ceres_bindings.cc b/src/pycolmap/estimators/ceres_bindings.cc index bc2470c494..8b32387838 100644 --- a/src/pycolmap/estimators/ceres_bindings.cc +++ b/src/pycolmap/estimators/ceres_bindings.cc @@ -161,8 +161,10 @@ void BindCeresTypes(py::module& m) { void BindCeresSolver(py::module& m) { using Options = ceres::Solver::Options; - py::class_ PyOptions(m, "SolverOptions", py::module_local()); + py::class_> PyOptions( + m, "SolverOptions", py::module_local()); PyOptions.def(py::init<>()) + .def(py::init()) .def("IsValid", &Options::IsValid) .def_readwrite("minimizer_type", &Options::minimizer_type) .def_readwrite("line_search_direction_type", @@ -262,8 +264,10 @@ void BindCeresSolver(py::module& m) { MakeDataclass(PyOptions); using Summary = ceres::Solver::Summary; - py::class_ PySummary(m, "SolverSummary", py::module_local()); + py::class_> PySummary( + m, "SolverSummary", py::module_local()); PySummary.def(py::init<>()) + .def(py::init()) .def("BriefReport", &Summary::BriefReport) .def("FullReport", &Summary::FullReport) .def("IsSolutionUsable", &Summary::IsSolutionUsable) @@ -362,9 +366,11 @@ void BindCeresSolver(py::module& m) { MakeDataclass(PySummary); using IterSummary = ceres::IterationSummary; - py::class_ PyIterSummary( + py::class_> PyIterSummary( m, "IterationSummary", py::module_local()); PyIterSummary.def(py::init<>()) + .def(py::init()) + .def("cast_to_pointer", [](IterSummary& self) { return &self; }) .def_readonly("iteration", &IterSummary::iteration) .def_readonly("step_is_valid", &IterSummary::step_is_valid) .def_readonly("step_is_nonmonotonic", &IterSummary::step_is_nonmonotonic) From b37502b0c058ad6a87206dc154207162c38f8431 Mon Sep 17 00:00:00 2001 From: B1ueber2y Date: Wed, 18 Dec 2024 15:56:11 +0100 Subject: [PATCH 2/2] update --- src/pycolmap/estimators/ceres_bindings.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pycolmap/estimators/ceres_bindings.cc b/src/pycolmap/estimators/ceres_bindings.cc index 8b32387838..0beff38785 100644 --- a/src/pycolmap/estimators/ceres_bindings.cc +++ b/src/pycolmap/estimators/ceres_bindings.cc @@ -370,7 +370,6 @@ void BindCeresSolver(py::module& m) { m, "IterationSummary", py::module_local()); PyIterSummary.def(py::init<>()) .def(py::init()) - .def("cast_to_pointer", [](IterSummary& self) { return &self; }) .def_readonly("iteration", &IterSummary::iteration) .def_readonly("step_is_valid", &IterSummary::step_is_valid) .def_readonly("step_is_nonmonotonic", &IterSummary::step_is_nonmonotonic)