Eos-py

Latest version: v1.5.0

Safety actively analyzes 707299 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 6

1.5.0

This release contains only a few very minor convenience code updates, and the CI move to GitHub Actions.

This will be the last release to support C++14. The next release will require a C++17 compiler.

Summarised changes:
- Added vcpkg.json to use dependencies from vcpkg for local development
- Updated CI: switched from Appveyor & Travis to GitHub Actions. Using vcpkg caching on CI.
- Added a .yml that builds the Python bindings using cibuildwheel (https://github.com/patrikhuber/eos/pull/361, thank you omar-h-omar!)
- Adding more fitting python bindings (354) fbb07631934585005c9fd092e254cae6278a9973 (by omar-h-omar)
- Updated pybind11 to 2.13.6 (support for Python 3.12), toml11 to 3.8.1, and Cereal (latest master)
- Improved `LandmarkMapper` support for hybrid mappings: There is now a `get_vertex_index()` function in `LandmarkMapper.hpp` that should be used for both use cases and works with both direct (landmark-id to vertex-index in the mappings .txt file) and indirect (landmark-id to generic-landmark-name in the mappings .txt file, generic-landmark-name to vertex-index as `landmark_definitions` inside a `MorphableModel` (e.g. the 4DFM uses this)). (61ccbcb88a527b21f14f9303a84ed686b3830e0f, 165d17c00215113e8ea15c6210701d3692a5b950)
- Added `get_shape_at_point()` for neutral shape only models and for PCA expression models (3445b1ccd2b8fc48b132c90c3fe8b8987d2a334a, 32760194ddc21d5012a3488f5100a2cb6be87fa0)
- Minor `include` & build fixes/updates

Thanks to the new `cibuildwheel` CI, there are now Python wheels for Windows, Linux and macOS, and for various Python versions, on PyPI: https://pypi.org/project/eos-py/1.5.0/#files

1.4.0

This release contains quite a few major updates, alongside some smaller "maintenance" updates.

* Removed the use of the GLM library completely, and now using Eigen types throughout. (E.g. 413c9f96302286db346384e8be4a371557003a18, 7e99ab18cd538e8d8ddd4b78affa56a8f00dcfe2, a23ee0bacbd32f2649211a88817c23f3d246c7fc, 096b68e3fb560787871bf7be91b2fd914a353be6, and other commits). This simplified a lot of code. Rewrote `glm::project()`, `perspective()` and `ortho()` using Eigen (see [eos/render/matrix_projection.hpp](https://github.com/patrikhuber/eos/blob/master/include/eos/render/matrix_projection.hpp)).
* Rewrote the nonlinear Ceres fitting using Eigen. This means no more messing around with `GLM_FORCE_UNRESTRICTED_GENTYPE`. Eigen and Ceres work much nicer together. Many improvements, and most cost functions were renamed - check the commit message in d101ca546118ae8736920915c6ac0dead448161f for more details. Also reworked `PriorCost` and renamed it to `NormCost` (e79da919a14b2449acbf8eff57572238e205ed95), and updated fit-model-ceres.
* Now doing a proper conversion between quaternions (or rotation matrices) and Euler angles that makes sense (1023e4b09a8c88f0f7dae25b7f83785f2d997a15, a23ee0bacbd32f2649211a88817c23f3d246c7fc)
* Added the necessary Python bindings so that the fitting loop can now be written and customised in Python (347) (Thank you omar-h-omar)
* Updated eigen3-nnls, nanoflann, toml11 and pybind11 submodules to their latest version. Especially toml11 had a big update, and the updated pybind11 supports Python 3.11.
* Minor change, but may break downstream code: Moved `fitting::concat` to `contour_correspondence.hpp` (1029f96f8bd8fa66b55ad1f73962b14aa3fc0f85)
* Modernised CMake scripts a bit. Removed `add_definitions()` for Boost (1de80682ad38f0e5784302e3089b52b6aca5ff39), and used CMake targets whenever available (e.g. `Ceres::ceres`).

The [documentation website](https://patrikhuber.github.io/eos/doc/) is updated to v1.4.0.

The updated release is available on [PyPI](https://pypi.org/project/eos-py/), with wheels for Python 3.9, 3.10 and 3.11 on Windows (x64), and source installation for other platforms.

Note: It is very likely that the next release will require the C++17 standard, and will no longer compile in C++14 mode.

1.3.0

This is a minor maintenance release, but with one important change, warranting the version push to 1.3.0 to not catch anyone off guard: The Eigen version in `3rdparty/` is updated from 3.3.4 to the latest 3.4.0.

Full release notes:
* Eigen version in `3rdparty/` is updated from 3.3.4 to 3.4.0. The submodule now also uses the official Eigen gitlab.com URL.
* Added a script to load the Liverpool-York Head Model (LYHM) (1153e77dab41161f91c1bdeece72650b0956317a)
* Added a `CITATION.cff` file to make it easier to correctly cite eos
* Updated the `__repr__` methods of some Python bindings a bit (9b8b3509e609be026f56d98073c2cb6699c55978)
* Replaced `ExpressionModelType` `None` with `none` in Python to avoid clashing with Python's keyword `None` (85d09d255da4d57817e0263a06aec0626ed38fed)
* Added a constructor to `eos::core::Mesh`'s Python bindings to make it more convenient to create a `Mesh` object (b2f24a12123b0e2409c139cc5d991e3b2a326454)
* Updated pybind11 to 2.9.1

Note: It is quite likely that support for C++14 will be dropped in one of the future releases, and a C++17 compliant compiler will become the minimum requirement to use eos.

1.2.1

This is a follow-up update pushing the python bindings to PyPI:

Updated pybind11 to their latest master commit, and changed the Visual Studio CMake generator for the Python bindings from VS 2017 to VS 2019 (75ecca4ac84dce5a1a5113704f7f8714060663da).

eos/patrikhuber is now part of GitHub Sponsors. If you are finding eos valuable, there is now the possibility of [becoming a sponsor](https://github.com/sponsors/patrikhuber).

**See the [v1.2.0 release notes](https://github.com/patrikhuber/eos/releases/tag/v1.2.0) for all the changes and improvements in this release!**

The updated release is available on [PyPI](https://pypi.org/project/eos-py/).

1.2.0

This release updates the renderer and texture extraction, with full support for perspective projection (along with orthographic projection), and contains various other smaller improvements and fixes.

New / major improvements:
* Improved `v2::extract_texture(...)` to support texture coordinates with seams (63243b2)
* Moved `v2::extract_texture(...)` to the `eos::render` namespace and made it the new default (08cba28). Calling code needs to be adjusted slightly, but the function's parameters are very similar. This new texture extraction uses the `Rasterizer` of the new renderer, and supports both orthographic and perspective projection.
* Removed the old `extract_texture(...)` function, which only supported affine cameras (8fd1735)
* Improved `SoftwareRenderer::render(...)` to correctly deal with texture maps with seams (c1defba)
* Removed the old `render(...)` function, moved `v2::SoftwareRenderer` to the `render` namespace, and added a convenience function for the new renderer that can be called (almost) like the old renderer (12a4120) - calling code needs slight adjustments. The core of the new renderer is the same, but the architecture has been changed to mirror more closely the hardware (or OpenGL) pipeline, with vertex- and fragment shaders. Results should be exactly the same, and they have the same parameters.
- _Note:_ Whereas previously, meshes without vertex colour would be rendered with the colour `(0.5, 0.5, 0.5)`, in the new renderer, they will have default colour black (bd01644). In any case, it does not make sense to try and render a mesh without vertex colours or texture.
* Added vertex visibility check function that supports both orthographic and perspective projection (0db88d3). Introduced an `enum class` `ProjectionType`, which specifies whether orthographic or perspective projection should be used.

Fixes:
* Changed strides in `Image` python bindings to account for row-major `Image` class (dc0fce8). (The `Image` class was changed to row-major in a commit a while ago, but the python bindings were never updated to accommodate this.)
* Updated `mpark::variant` to their latest master (bd590bf). This should fix a few compile errors with certain compilers when compiling eos in C++14 mode.

Minor improvements/changes:
* Improved `v2::extract_texture(...)` to not crash when the projected model is partially outside the image (442497e)
* Added `clear_buffers()` function to `SoftwareRenderer` and `Rasterizer` to clear the colour- and depth buffers (1e8a875)
* Set the colourbuffer's clear color to fully transparent (fc1465e)
* Added `project(...)` function to `PcaModel` (4694d6f) (see 295 for a potential issue)
* Moved `render/draw_utils.hpp` to `render/opencv/` (914fdd5)
* Added new `draw_wireframe(...)` function that doesn't need OpenCV (7303b39) and added python binding for it (f1f83d0)
* Renamed "isomap" to "texturemap" throughout, and the `<filename>.isomap.png` output of the example apps to `<filename>.texture.png` (174a2c2)
* Various other minor improvements.

Removed:
* Removed `render::detail::interpolate_black_line(...)` (it was only needed for 4, which was fixed, and also it was for the old texture extraction) (35abed8)
* Removed `estimate_affine_camera(...)`. See the commit message, for people that were still using this. (507eb77)
* Removed `render_affine(...)`, this was used in the old texture extraction and is no longer needed (aee7984).

1.1.2

This is a minor update that slightly improves the internals of loading `.scm` models from CVSSP from the University of Surrey, and also adds `load_scm_model(...)` to the Python bindings, so these models can be loaded directly in Python.

Changes/improvements:

* Removed the OpenCV dependency of `eos/morphablemodel/io/cvssp.hpp`, and clarified the documentation slightly [dd4cd62d4724f4368916875d1303f03e98f2f0fb and following]
* Subsequently, the utils (with `utils/scm-to-cereal` being the only one) can now be built without OpenCV [d465a042a860283ba3f11ce15683bf186a607273]
* Added `load_scm_model(...)` to the Python bindings (in the namespace `eos.morphablemodel.load_scm_model(...)`) [b82b85244d5e5ed55a257d0483d21bcfcef4c9c6]

The updated release is also available on [PyPI](https://pypi.org/project/eos-py/).

Page 1 of 6

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.