Skip to content

Adding workflows and support for usage on MacOS, Windows and Ubuntu#126

Open
YonatanSimson wants to merge 14 commits intolaurentkneip:masterfrom
YonatanSimson:master
Open

Adding workflows and support for usage on MacOS, Windows and Ubuntu#126
YonatanSimson wants to merge 14 commits intolaurentkneip:masterfrom
YonatanSimson:master

Conversation

@YonatanSimson
Copy link
Copy Markdown

The main purpose is to make UPnP easily accessible on most operating systems with python bindings.
I found UPnP to be better than EpnP and SQPnP. Also UPnP natively supports 360 images. UPnP is currently not supported in opencv.

Copilot AI and others added 14 commits December 29, 2025 18:52
Co-authored-by: YonatanSimson <6965874+YonatanSimson@users.noreply.github.com>
Co-authored-by: YonatanSimson <6965874+YonatanSimson@users.noreply.github.com>
…ability

Co-authored-by: YonatanSimson <6965874+YonatanSimson@users.noreply.github.com>
Co-authored-by: YonatanSimson <6965874+YonatanSimson@users.noreply.github.com>
Co-authored-by: YonatanSimson <6965874+YonatanSimson@users.noreply.github.com>
…or SQPnP and enhance .gitignore to include .venv. Introduce MANIFEST.in for packaging and add README files for Python bindings.
* Fixing workflows to work on standard OS paltforms

* Fixing MacOS and windows workflows

* Fixed bugs in SQPnP and added tests

* Fixed compilation errors

* Fix CMake get_filename_component calls on Windows

Quote PYTHON_EXECUTABLE and _PYTHON_DIR variables to handle paths with spaces.
Windows Python paths often contain spaces which caused CMake to interpret
them as multiple arguments, resulting in 'incorrect number of arguments' error.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Add Eigen diagnostics and fix vcpkg configuration

- Remove manual EIGEN_INCLUDE_DIR override to let vcpkg toolchain handle it
- Add CMake diagnostics to verify Eigen unsupported modules are found
- Add workflow step to verify Eigen installation before building

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Fixing windows workflow

* Fixed problems in workflow, added pyproject.toml, fixed problems in SQPnP test

* Adding support for clang + ninja compilation in git bash

* Adding UPnP to tests and exposing to python by adding wrapper

* Fixing ninja-clang workflow

* TGesting backward vectors and fixing failing tests

* Fixing windows workflow

* Fixing python build and test failures in windows and ubuntu

* Add P3P backward vector test and comprehensive benchmark

- Added test_p3p_backward_vectors.cpp to validate P3P Kneip and Gao work with mixed forward/backward bearing vectors
- Added lambda_twist_p3p.py: Pure Python reference implementation of Lambda Twist P3P solver (ECCV 2018)
- Added benchmark_p3p_solvers.py: Comprehensive benchmark comparing P3P Kneip, Gao, and Lambda Twist

Key findings:
- All three P3P minimal solvers (Kneip, Gao, Lambda Twist) correctly handle backward-facing bearing vectors
- Kneip: ~0.005ms, 100% success, 1.7e-15m accuracy (fastest)
- Gao: ~0.009ms, 100% success, 2.2e-10m accuracy (fast)
- Lambda Twist: ~0.5ms, 100% success, 5.3e-14m accuracy (Python, slower but excellent accuracy)

All three solvers are suitable for omnidirectional/panoramic camera RANSAC.

Fixed coordinate convention conversion between Lambda Twist (camera-to-world) and OpenGV (world-to-camera).

* Fixed wheel build
Fixed segmentation faults in relative tests

* Segmentation fault due to setting std=0 in gaussian norm

* Removed superflous testing

* Moving benchmarks out of tests

* Hunting down segmentation faults in MSVC build. Fixing python build failures in workflow

* Changing way of installing windows dependencies

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
* Fixing wheel build + python311.lib errors

* Increasing stack memory for windows build - try to fix segmentation faults

* Removing conda build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants