v0.12.0
This is mainly a maintenance release but contains quite a number of improvements. There are some breaking changes in this release and models have to be re-downloaded in the new format.
Major changes:
- Changed
PcaModel,MorphableModeland blendshapes to use Eigen for matrices and vectors instead of OpenCV'scv::Mat. This change was motivated by the fact that we need Eigen already anyway for solving linear systems. And since Eigen is a header-only library, the core of eos becomes more independent of OpenCV and easier to compile in the near future.
This change means that the model format has changed as well, so users will have to re-download the models and blendshapes in the new model format. - Changed
PcaModelconstructor to take an orthonormal basis (4662c59)
This introduces a breaking change: If you're currently using thePcaModelconstructor and are passing it a PCA basis matrix, your code will (probably silently) break: The function now expects an orthonormal basis matrix, whereas before, it expected a rescaled basis matrix. However it makes more sense for the function to take an orthonormal basis matrix, as this is usually the result after computing a PCA on data. - Furthermore, "unnormalised" basis has been renamed to "orthonormal", and "normalised" basis to "rescaled", and the getters have been modified accordingly. This should clear up confusion and make the descriptions good and unambiguous ("normalised" and "unnormalised" was really not a good choice!). (0fdd8a1)
Minor changes:
- Updated all apps and utilities to reflect all the changes in this release
- We now only store the orthonormal basis in the model files - the rescaled basis is computed when models are loaded. This halves the file size of all models. (50c059c)
- Renamed
get_*_pca_basis(int)toget_*_pca_basis_at_point(int)(354deb3) - The mean, basis and eigenvalues of PcaModel are now returned by const reference (8901c11)
- Added a setup.py file for python's pip:
This means eos's python bindings can now be built and installed withpip install ./eos, and packages can be created withpython setup.py sdistandpython setup.py bdist_wheel. Asetup.cfg.templateexists to set library paths to OpenCV and Boost. - Added various python bindings: write_obj, save_model, functionality to construct new models, draw_sample, and more
- Added Eigen as git submodule. This was required because Ubuntu 14.04 only ships with Eigen 3.2.2, while pybind11's new Eigen bindings requires at least 3.2.7. This way, we're also more independent with regards to Python's
sdistpackage. An external Eigen can still be used by settingEIGEN3_INCLUDE_DIR. - Added cereal as submodule, removed local copy (f38ac62)
- Added better warnings and errors as to the use of
fit-model-ceres - Minor documentation fixes and improvements.
eos python bindings are now available on PyPI! There's a wheel for python 3.5 on Windows, and a source dist. The source dist needs CMake's find_package to be able to find OpenCV and Boost automatically for it to work (so install it beforehand from a package manager).
If there are issues, you can always clone the repo and do pip install ./eos locally, after adjusting the paths in setup.cfg.
As always, make sure to clone the repository with git clone --recursive, or, if you're updating, run git submodule update --init --recursive.
Windows binaries are compiled with Windows 8.1 64bit, Visual Studio 2015. A .whl with python bindings for python 3.5 is available on PyPI. The Matlab bindings are created for Matlab R2016b.
Linux binaries are compiled with Linux Mint 18, based on Ubuntu 16.04, gcc-5.4.