patrikhuber / 4dface

Real-time 3D face tracking and reconstruction from 2D video

Home Page:https://www.4dface.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

error: ‘const class Eigen::ArrayWrapper<const Eigen::Matrix<float, -1, 1> >’ has no member named ‘rsqrt’

lulu1315 opened this issue · comments

commented

hello and thank you for the code
I'm trying to compile on KDE Neon (Ubuntu 16.04)
and got the following error :

make
Scanning dependencies of target 4dface
[ 50%] Building CXX object CMakeFiles/4dface.dir/apps/4dface.cpp.o
In file included from /shared/foss/4dface/external/eos/include/eos/morphablemodel/MorphableModel.hpp:26:0,
from /shared/foss/4dface/apps/helpers.hpp:27,
from /shared/foss/4dface/apps/4dface.cpp:20:
/shared/foss/4dface/external/eos/include/eos/morphablemodel/PcaModel.hpp: In function ‘Eigen::MatrixXf eos::morphablemodel::normalise_pca_basis(const MatrixXf&, const VectorXf&)’:
/shared/foss/4dface/external/eos/include/eos/morphablemodel/PcaModel.hpp:399:78: error: ‘const class Eigen::ArrayWrapper<const Eigen::Matrix<float, -1, 1> >’ has no member named ‘rsqrt’
const Eigen::VectorXf one_over_sqrt_of_eigenvalues = eigenvalues.array().rsqrt();
^
CMakeFiles/4dface.dir/build.make:62: recipe for target 'CMakeFiles/4dface.dir/apps/4dface.cpp.o' failed
make[2]: *** [CMakeFiles/4dface.dir/apps/4dface.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/4dface.dir/all' failed
make[1]: *** [CMakeFiles/4dface.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2

this is the output of cmake :

cmake -DCMAKE_INSTALL_PREFIX=../4dface_install -DCMAKE_BUILD_TYPE=Release -DOpenCV_haarcascades_DIR=/usr/share/opencv/haarcascades/ ../4dface/
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenCV: /usr (found suitable version "3.2.0", minimum required is "3") found components: core imgcodecs imgproc highgui videoio objdetect
-- OpenCV include dir found at /usr/include;/usr/include/opencv
-- OpenCV library dir found at
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- system
-- filesystem
-- program_options
-- Boost found at /usr/include
-- Found Eigen3: /usr/local/include/eigen3 (Required is at least version "2.91.0")
-- Eigen3 found: TRUE
-- Eigen3 include dir found at /usr/local/include/eigen3
-- Eigen3 version: 3.2.10
-- Downloading face_landmarks_model_rcr_68.bin (84.6 MB)...
-- [download 100% complete]
....
-- face_landmarks_model_rcr_68.bin successfully downloaded.
-- Configuring done
-- Generating done
-- Build files have been written to: /shared/foss/4dface_build

Hi,

You're on a quite old Eigen version. Their changelog tells me rsqrt was added in 3.3. I recommend you update Eigen, you can also just clone their repo locally and point 4dface/eos to use that local version.

Feel free to re-open if that doesn't solve the issue.

By the way: Our readme correctly lists Eigen 3.3 as the minimum required version. I recommend you read through it.

commented

thank you patrik
I downloaded eigen 3.3.5
how can i point 4dface/eos to use that local version?
luc

I'd use cmake-gui, and I think then there is EIGEN3_INCLUDE_DIR, or something like that. It may also help if you have a quick look at the 4dface/eos CMakeLists, in case that doesn't work right away.

This is really more of a CMake question than 4dface/eos related.

commented

thank you patrik
I've got it working.just copied eigen/Eigen to /usr/local/include worked.
just a little question , I'm looking for the 68 landmarks coordinates.
do they correspond to a subset of vertex of the .obj 3D object ?
thanks in advance
luc

I think what you're looking for is the mapping files, for example https://github.com/patrikhuber/eos/blob/master/share/ibug_to_sfm.txt. You can also search/read through the (closed) issues of the 4dface and eos repos a bit, there are a number of posts there that answer questions regarding 2D landmarks mappings.

commented

great!.I will dig into that.
thanks for your help
luc