git: 915ef0a2055b - main - graphics/poselib: Minimal solvers for calibrated camera pose estimation

From: Robert Clausecker <fuz_at_FreeBSD.org>
Date: Tue, 10 Dec 2024 09:07:05 UTC
The branch main has been updated by fuz:

URL: https://cgit.FreeBSD.org/ports/commit/?id=915ef0a2055bea37cfb77f2186a8394f16423646

commit 915ef0a2055bea37cfb77f2186a8394f16423646
Author:     Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2024-12-09 12:21:50 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2024-12-10 09:03:00 +0000

    graphics/poselib: Minimal solvers for calibrated camera pose estimation
    
    PoseLib provides a collection of minimal solvers for camera pose
    estimation.  The focus is on calibrated absolute pose estimation
    problems from different types of correspondences (e.g. point-point,
    point-line, line-point, line-line).
    
    The goals of this project are to provide
    
     - Fast and robust implementation of the current state-of-the-art
       solvers.
     - Consistent calling interface between different solvers.
     - Minimize dependencies, both external (currently only Eigen) and
       internal.  Each solver is (mostly) stand-alone, making it easy
       to extract only a specific solver to integrate into other frameworks.
     - Robust estimators (based on LO-RANSAC) that just works out-of-the-box
       for most cases.
    
    WWW: https://github.com/PoseLib/PoseLib
---
 graphics/Makefile                           |  1 +
 graphics/poselib/Makefile                   | 22 +++++++++++
 graphics/poselib/distinfo                   |  3 ++
 graphics/poselib/files/patch-CMakeLists.txt | 15 ++++++++
 graphics/poselib/pkg-descr                  | 15 ++++++++
 graphics/poselib/pkg-plist                  | 59 +++++++++++++++++++++++++++++
 6 files changed, 115 insertions(+)

diff --git a/graphics/Makefile b/graphics/Makefile
index 396df96c5b17..c053e5b41ba9 100644
--- a/graphics/Makefile
+++ b/graphics/Makefile
@@ -855,6 +855,7 @@
     SUBDIR += poppler-qt5
     SUBDIR += poppler-qt6
     SUBDIR += poppler-utils
+    SUBDIR += poselib
     SUBDIR += potrace
     SUBDIR += povray-meta
     SUBDIR += povray37
diff --git a/graphics/poselib/Makefile b/graphics/poselib/Makefile
new file mode 100644
index 000000000000..fb5f45375dc2
--- /dev/null
+++ b/graphics/poselib/Makefile
@@ -0,0 +1,22 @@
+PORTNAME=	PoseLib
+DISTVERSIONPREFIX=	v
+DISTVERSION=	2.0.4
+CATEGORIES=	graphics
+
+MAINTAINER=	fuz@FreeBSD.org
+COMMENT=	Minimal solvers for calibrated camera pose estimation
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${LOCALBASE}/libdata/pkgconfig/eigen3.pc:math/eigen3
+
+USES=		cmake pkgconfig
+USE_GITHUB=	yes
+USE_LDCONFIG=	yes
+
+OPTIONS_DEFINE=	NATIVE
+NATIVE_CMAKE_BOOL=	MARCH_NATIVE
+CMAKE_ON=	BUILD_SHARED_LIBS
+
+.include <bsd.port.mk>
diff --git a/graphics/poselib/distinfo b/graphics/poselib/distinfo
new file mode 100644
index 000000000000..ed3c2c5b8bb7
--- /dev/null
+++ b/graphics/poselib/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1733745905
+SHA256 (PoseLib-PoseLib-v2.0.4_GH0.tar.gz) = caa0c1c9b882f6e36b5ced6f781406ed97d4c1f0f61aa31345ebe54633d67c16
+SIZE (PoseLib-PoseLib-v2.0.4_GH0.tar.gz) = 198206
diff --git a/graphics/poselib/files/patch-CMakeLists.txt b/graphics/poselib/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..b1553e6ddad4
--- /dev/null
+++ b/graphics/poselib/files/patch-CMakeLists.txt
@@ -0,0 +1,15 @@
+--- CMakeLists.txt.orig	2024-12-09 12:10:16 UTC
++++ CMakeLists.txt
+@@ -28,10 +28,10 @@ else()
+ 	# If you change this, make sure to update the corresponding line in the pybind CMakeLists
+ 	if (MARCH_NATIVE)
+ 		target_compile_options(${LIBRARY_NAME} PRIVATE
+-			-march=native -Wall -Werror -fPIC -Wno-ignored-optimization-argument)
++			-march=native -Wall -fPIC -Wno-ignored-optimization-argument)
+ 	else()
+ 		target_compile_options(${LIBRARY_NAME} PRIVATE
+-			-Wall -Werror -fPIC)
++			-Wall -fPIC)
+ 	endif()
+ 	if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ 		target_compile_options(${LIBRARY_NAME} PRIVATE
diff --git a/graphics/poselib/pkg-descr b/graphics/poselib/pkg-descr
new file mode 100644
index 000000000000..4461d321a05b
--- /dev/null
+++ b/graphics/poselib/pkg-descr
@@ -0,0 +1,15 @@
+PoseLib provides a collection of minimal solvers for camera pose
+estimation.  The focus is on calibrated absolute pose estimation
+problems from different types of correspondences (e.g. point-point,
+point-line, line-point, line-line).
+
+The goals of this project are to provide
+
+ - Fast and robust implementation of the current state-of-the-art
+   solvers.
+ - Consistent calling interface between different solvers.
+ - Minimize dependencies, both external (currently only Eigen) and
+   internal.  Each solver is (mostly) stand-alone, making it easy
+   to extract only a specific solver to integrate into other frameworks.
+ - Robust estimators (based on LO-RANSAC) that just works out-of-the-box
+   for most cases.
diff --git a/graphics/poselib/pkg-plist b/graphics/poselib/pkg-plist
new file mode 100644
index 000000000000..c03974dd1287
--- /dev/null
+++ b/graphics/poselib/pkg-plist
@@ -0,0 +1,59 @@
+include/PoseLib/alignment.h
+include/PoseLib/camera_pose.h
+include/PoseLib/misc/colmap_models.h
+include/PoseLib/misc/decompositions.h
+include/PoseLib/misc/essential.h
+include/PoseLib/misc/qep.h
+include/PoseLib/misc/quaternion.h
+include/PoseLib/misc/re3q3.h
+include/PoseLib/misc/sturm.h
+include/PoseLib/misc/univariate.h
+include/PoseLib/poselib.h
+include/PoseLib/robust.h
+include/PoseLib/robust/bundle.h
+include/PoseLib/robust/estimators/absolute_pose.h
+include/PoseLib/robust/estimators/homography.h
+include/PoseLib/robust/estimators/hybrid_pose.h
+include/PoseLib/robust/estimators/relative_pose.h
+include/PoseLib/robust/jacobian_impl.h
+include/PoseLib/robust/lm_impl.h
+include/PoseLib/robust/ransac.h
+include/PoseLib/robust/ransac_impl.h
+include/PoseLib/robust/sampling.h
+include/PoseLib/robust/utils.h
+include/PoseLib/solvers/gen_relpose_5p1pt.h
+include/PoseLib/solvers/gen_relpose_6pt.h
+include/PoseLib/solvers/gen_relpose_upright_4pt.h
+include/PoseLib/solvers/gp3p.h
+include/PoseLib/solvers/gp4ps.h
+include/PoseLib/solvers/homography_4pt.h
+include/PoseLib/solvers/p1p2ll.h
+include/PoseLib/solvers/p2p1ll.h
+include/PoseLib/solvers/p2p2pl.h
+include/PoseLib/solvers/p3ll.h
+include/PoseLib/solvers/p3p.h
+include/PoseLib/solvers/p3p_ding.h
+include/PoseLib/solvers/p4pf.h
+include/PoseLib/solvers/p5lp_radial.h
+include/PoseLib/solvers/p6lp.h
+include/PoseLib/solvers/relpose_5pt.h
+include/PoseLib/solvers/relpose_6pt_focal.h
+include/PoseLib/solvers/relpose_7pt.h
+include/PoseLib/solvers/relpose_8pt.h
+include/PoseLib/solvers/relpose_upright_3pt.h
+include/PoseLib/solvers/relpose_upright_planar_2pt.h
+include/PoseLib/solvers/relpose_upright_planar_3pt.h
+include/PoseLib/solvers/ugp2p.h
+include/PoseLib/solvers/ugp3ps.h
+include/PoseLib/solvers/ugp4pl.h
+include/PoseLib/solvers/up1p1ll.h
+include/PoseLib/solvers/up1p2pl.h
+include/PoseLib/solvers/up2p.h
+include/PoseLib/solvers/up4pl.h
+include/PoseLib/types.h
+include/PoseLib/version.h
+lib/cmake/PoseLib/PoseLibConfig.cmake
+lib/cmake/PoseLib/PoseLibConfigVersion.cmake
+lib/cmake/PoseLib/PoseLibTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/PoseLib/PoseLibTargets.cmake
+lib/libPoseLib.so