Git Product home page Git Product logo

4dface's People

Contributors

patrikhuber avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

4dface's Issues

please help me, thank you

std::tie(mesh, rendering_params) = fitting::fit_shape_and_pose( ..........), you have fitted the pose, shape model, and expression blendshapes to landmarks in an iterative way using this function, and obtained a merged mesh, but why you merge the isomap and shape_coefficients again using the following two functions:
const Mat merged_isomap = isomap_averaging.add_and_merge(isomap);
shape_coefficients = pca_shape_merging.add_and_merge(shape_coefficients);

How to retrieve the head pose estimation / Euler angles

The eos library provides a linear scaled orthographic projection estimation of the camera pose. Is there also the possibilty to retrieve the current head pose? Or alternatively translate the camera pose into the head pose?
To be specific the head pose in terms of the euler angles or rotation with its centroid for example on the nose tip and directed towards the "camera".

Blendshapes of the 16k vertex model produce faulty shapes

Thank you for your effort in this repo! I've learnt a lot from it.

I was wondering if the blendshape is working as intended. In addition to writing a neutral face to an .obj file, I also wanted to write a face with expression to another file.
// neutral_expression and merged_mesh are defined in 4dface.cpp render::write_textured_obj(neutral_expression, "neutral.obj"); render::write_textured_obj(merged_mesh, "expression.obj");

The neutral face looks great, but not for the one with expression. I think it has something to do with the blendshape, but I'm not sure.
screen shot 2016-11-29 at 2 31 42 am
screen shot 2016-11-29 at 2 32 06 am

Make Install Error

Hi,

I'm having some errors with the make install step, I've followed the readme steps. This is the error I'm getting.

nathan@nathan-HP-ENVY-x360-Convertible:~/build2$ make install
[100%] Built target 4dface
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/bin/4dface
CMake Error at cmake_install.cmake:47 (file):
file INSTALL cannot copy file "/home/nathan/build2/4dface" to
"/usr/local/bin/4dface".

Makefile:85: recipe for target 'install' failed
make: *** [install] Error 1

Any help would be appreciated and great work with all your projects.

Is it possible to use my own face model?

Hi,
thank you for your amazing project. However, I want to know if I can use my own face model? I noticed that now your project is using a sfm_shape_3448.bin file made by cereal. However, my face model is an obj file. I wish to know how to incorporate my own face model into your project? What jobs are needed to be done? Is your code compatible with different face model?

Thanks!

Shortcuts in the 4dface app

Good morning,
First I would like to thank you for making such a cool software available as open source! I am running it on ubuntu throught the console command "cd install/bin" and "./4dface -i test.mp4", test.mp4 being a video file present in install/bin. I cannot run the application by double clicking on it in the folder install/bin directly, do you know if it is normal?
It opens two windows: my video with a green mesh on top of the face and a small render window where the 3d imaging of the face appears. My issue is I am stuck here with the functionalities: i cannot use the shortcuts q, r ans especially s in order to save the 3d model (mesh+texture). Could you please explain how to export the 3d model? Is there a command i could write in the console?

Thanks a lot for your work,
Quentin

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

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

Easy way to adjust frame size?

Happy to say I've also gotten 4dface running on a mac using Homebrew.

Is there an easy way to adjust the frame size the tracking runs on? Would performance improve beyond 5fps after reducing the frame size of the webcam video?

Thanks in advance!

Model fitting to videos

Quick question on how things work - it seems that reset the landmarks every frame. So does the fitting improve with multiple frames? Does the PCA get refined? Or is it each frame for itself?

Face Fine Details Fitting

I noticed that the fitting module of eos only contains code of fitting landmarks (related to function fitting::fit_shape_and_pose). The result 3D model is smooth and do not have much details. Is there any way to improve the details (i.e wrinkles) of the result model?
I thought that the detail missing is caused by the low resolution of morphable model (3448 vertices model). But even I used the higher resolution model, I do not get the expected details.

Error when using the BFM model

After using the conversion scripts available (convert_bfm2009_to_raw_binary.m ; bfm-binary-to-cereal ),
I got this message
Loading shape PCA basis matrix with 160470 rows and 199 cols.
Loading colour PCA basis matrix with 160470 rows and 199 cols.
Warning: PCA shape model's data dimension is different from the number of textur
e coordinates given. The converted model is still saved, but does most likely no
t work correctly for texturing.

But I was wondering about the warning is there any problem in the conversion process. Because when I used the generated file in 4dface project I got this error:

OpenCV Error: Assertion failed (s >= 0) in cv::setSize, file C:\opencv\github-2.
4\opencv\modules\core\src\matrix.cpp, line 116
OpenCV Error: Insufficient memory (Failed to allocate 128508788 bytes) in cv::Ou
tOfMemoryError, file C:\opencv\github-2.4\opencv\modules\core\src\alloc.cpp, lin
e 52

Error in running the INSTALL target

Hi Patrik

Thanks for the code

I have this error message when I try to build the install project in /visual Studio 2015.

Unhandled exception at 0x000007FEFCCEA06D in 4dface.exe: Microsoft C++ exception: cereal::Exception at memory location 0x00000000001C0F40.

Could not find Eigen3 with Visual studio 2017

I have done all but still getting this error

Severity Code Description Project File Line Suppression State
Error CMake Error at C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find Eigen3 (missing: EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK)
(Required is at least version "2.91.0") C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake 137

on this place

macro(_FPHSA_FAILURE_MESSAGE _msg)
if (${_NAME}_FIND_REQUIRED)
message(FATAL_ERROR "${_msg}")
else ()
if (NOT ${_NAME}_FIND_QUIETLY)
message(STATUS "${_msg}")
endif ()
endif ()
endmacro()

Please help to solve, thank you

Update travis and AppVeyor configs

travis and AppVeyor need to be updated for OpenCV 3 and to work with the new eos version.
4dface builds just fine though, the build failures are just because travis and AppVeyor haven't been updated yet.

Model and blendshapes dimension mismatch

Hi Patrik,

Thanks for your code. I'm trying to run 4dface.exe with the binaries "sfm_1724.bin", "sfm_16759.bin" and "sfm_29587.bin" but I have this error message:

4dface -m "../share/sfm_29587.bin"

OpenCV Error: Assertion failed (C.type() == type && (((flags&GEMM_3_T) == 0 && C.rows == d_size.height && C.cols == d_size.width) || ((flags&GEMM_3_T) != 0 && C.rows == d_size.width && C.cols == d_size.height))) in cv::gemm, file C:\buildslave64\win64_amdocl\master_PackSlave-win64-vc14-shared\opencv\modules\core\src\matmul.cpp, line 923

At first, I thought the problem occurs because I was using "sfm_xxx.bin" (I don't have "sfm_shape_xxxx.bin") but the program works with "sfm_3448.bin".
I don't know if this error can occur because I don't have "expression_blendshapes_xxxx.bin".

Regards,

Andoni.

toml module is missing

I created symbolic links for the external modules eos and
When I build, it still has errors:

~/dev/4dface/build$ make
[ 50%] Building CXX object CMakeFiles/4dface.dir/apps/4dface.cpp.o
In file included from /home/alex/dev/4dface/4dface-master/apps/helpers.hpp:26:0,
from /home/alex/dev/4dface/4dface-master/apps/4dface.cpp:20:
/home/alex/dev/4dface/4dface-master/external/eos/include/eos/core/LandmarkMapper.hpp:25:20: fatal error: toml.hpp: No such file or directory
compilation terminated.

Face-detection performance

Hello Patrik Huber,

Thank you for sharing your work.
I just compiled 4dface and applied it on a few videos.
But it seems that it has some performance issue for detecting a face.
Can I get some instruction for improving?

rendering profile face

hi, patrik, how can I render face with different pose.
I tried yaw pitch roll in RenderingParameters, but no lucky.

eos v0.12.1

Hi,

With the eos update v0.12.1, does 4dface work?

Regards,

Andoni.

Undefined symbols for architecture x86_64: Mac Sierra + Homebrew

I have tried to compile on Mac OS X Sierra, using Homebrew for the dependencies, and failed.

The cmake command:

cmake -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 -DOpenCV_haarcascades_DIR=/usr/local/Cellar/opencv/3.4.1_2/share/OpenCV/haarcascades ../

I placed the "build" dir inside the "4dface" dir.
And this is the failure message.

$ make
Scanning dependencies of target 4dface
[ 50%] Building CXX object CMakeFiles/4dface.dir/apps/4dface.cpp.o
[100%] Linking CXX executable 4dface
Undefined symbols for architecture x86_64:
  "cv::CascadeClassifier::detectMultiScale(cv::_InputArray const&, std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >&, double, int, int, cv::Size_<int>, cv::Size_<int>)", referenced from:
      _main in 4dface.cpp.o
  "cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)", referenced from:
      _main in 4dface.cpp.o
  "boost::program_options::to_internal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*) in 4dface.cpp.o
  "boost::program_options::validation_error::get_template[abi:cxx11](boost::program_options::validation_error::kind_t)", referenced from:
      boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) in 4dface.cpp.o
  "boost::program_options::options_description::options_description(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int)", referenced from:
      _main in 4dface.cpp.o
  "boost::program_options::invalid_option_value::invalid_option_value(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      void boost::program_options::validate<boost::filesystem::path, char>(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, boost::filesystem::path*, long) in 4dface.cpp.o
  "boost::program_options::error_with_option_name::error_with_option_name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)", referenced from:
      boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) in 4dface.cpp.o
  "boost::program_options::arg[abi:cxx11]", referenced from:
      boost::program_options::typed_value<boost::filesystem::path, char>::name[abi:cxx11]() const in 4dface.cpp.o
  "boost::program_options::detail::cmdline::cmdline(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)", referenced from:
      boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*) in 4dface.cpp.o
  "boost::program_options::operator<<(std::basic_ostream<char, std::char_traits<char> >&, boost::program_options::options_description const&)", referenced from:
      _main in 4dface.cpp.o
  "boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const", referenced from:
      vtable for boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value> in 4dface.cpp.o
      vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value> > in 4dface.cpp.o
      vtable for boost::exception_detail::error_info_injector<boost::program_options::validation_error> in 4dface.cpp.o
      vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::validation_error> > in 4dface.cpp.o
      vtable for boost::program_options::validation_error in 4dface.cpp.o
      vtable for boost::program_options::invalid_option_value in 4dface.cpp.o
  "boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool) const", referenced from:
      vtable for boost::program_options::typed_value<boost::filesystem::path, char> in 4dface.cpp.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[2]: *** [4dface] Error 1
make[1]: *** [CMakeFiles/4dface.dir/all] Error 2
make: *** [all] Error 2

No warning, No error, No make...

Hi, I have been stuck here for many days...
I follow the instruction but after I do the cmake ....., no make file showed. so I cannot do the make. I'm new to related things so I have hard time figuring out what's wrong. Please help me, thank you.
the following are the command line and [result.]
C:\ZhouJunfeng\project\4dface\build>cmake -C ../4dface/initial_cache.cmake -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 -DOpenCV_haarcascades_DIR=C:\\ZhouJunfeng\\project\\vcpkg\\vcpkg\\packages\\opencv_x64-windows\\share\\opencv\\haarcascades\\ ../4dface/ -G "Visual Studio 15 2017" loading initial cache file ../4dface/initial_cache.cmake -- The C compiler identification is MSVC 19.16.27027.1 -- The CXX compiler identification is MSVC 19.16.27027.1 -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- 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: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found OpenCV: C:/ZhouJunfeng/project/vcpkg/vcpkg/installed/x64-windows (found suitable version "3.4.3", minimum required is "3") found components: core imgcodecs imgproc highgui videoio objdetect -- OpenCV include dir found at C:/ZhouJunfeng/project/vcpkg/vcpkg/installed/x64-windows/include;C:/ZhouJunfeng/project/vcpkg/vcpkg/installed/x64-windows/include/opencv -- OpenCV library dir found at C:\ZhouJunfeng\project\vcpkg\vcpkg\packages\opencv_x64-windows\lib -- Boost version: 1.59.0 -- Found the following Boost libraries: -- system -- filesystem -- program_options -- Boost found at C:/tools/boost_1_59_0 -- Eigen3 found: TRUE -- Eigen3 include dir found at C:\ZhouJunfeng\project\vcpkg\vcpkg\installed\x64-windows\include\eigen3 -- Eigen3 version: 3.3.7 -- Configuring done -- Generating done -- Build files have been written to: C:/ZhouJunfeng/project/4dface/build
微信图片_20190401112829

uv-mapping of a custom head model

Hi

I am using full head model. So I do not need to use the extracted texture from the video frame. When I passed the texture image to create_mipmapped_texture function I got a distorted texture, could explain to me how can I solve this problem? Do I use the correct function?

The result that I got is showed in the figure.

Regards
fig

Possibility of choosing quality versus speed trade-offs to decrease frame processing times?

Hi

First of all, thanks for the great work you are doing with 4dface and all the other related libraries.

I ran the latest pre-built release and it works correctly, however the example runs at about 5 FPS.

I have the following question: what would be the best ways / parameters that could be tweaked to decrease processing times, at the expense of losing some of the accuracy?

For example:

  • would input image down-scaling help reduce times?
  • could a simpler face mesh (with less vertices) help decrease mesh fitting times?

These the specs of the machine I'm using:

  • Microsoft Windows 10 Pro
  • NVIDIA GeForce GTX 1080
  • Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz, 4001 Mhz, 4 main processors, 8 logic processors
  • 32.0 GB of RAM
  • Logitech C930e Webcam (USB 2.0, max FPS seems to be 30)

Regards

How can I use my own set of 2D landmarks in eos

Dear Patrik,

Thanks for your great working, which is very helpful for my research.
I want to try use another set of 2D landmarks(72 landmarks), which I manually labeled the corresponding vertex on the PCA model, and change ibug2did.txt for remapping. I found that the results of the testing is wrong. How can I use my own set of 2D landmarks in eos?

Best Regards
Che #

Eigen compilation errors on Ubuntu 16.10

Got a bunch of errors trying to compile. Any ideas?

[ 50%] Building CXX object CMakeFiles/4dface.dir/apps/4dface.cpp.o
In file included from /usr/include/eigen3/Eigen/Core:387:0,
from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/blendshape_fitting.hpp:27,
from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/fitting.hpp:32,
from /home/vess/code/3d/experiments/4dface/4dface/apps/4dface.cpp:24:
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h: In instantiation of ‘void Eigen::internal::call_assignment_no_alias(Dst&, const Src&, const Func&) [with Dst = Eigen::Matrix<float, -1, -1, 1>; Src = Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >; Func = Eigen::internal::assign_op<float, float>]’:
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:721:41: required from ‘Derived& Eigen::PlainObjectBase::_set_noalias(const Eigen::DenseBase&) [with OtherDerived = Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >; Derived = Eigen::Matrix<float, -1, -1, 1>]’
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:531:19: required from ‘Eigen::PlainObjectBase::PlainObjectBase(const Eigen::DenseBase&) [with OtherDerived = Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >; Derived = Eigen::Matrix<float, -1, -1, 1>]’
/usr/include/eigen3/Eigen/src/Core/Matrix.h:379:29: required from ‘Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const Eigen::EigenBase&) [with OtherDerived = Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >; _Scalar = float; int _Rows = -1; int _Cols = -1; int _Options = 1; int _MaxRows = -1; int _MaxCols = -1]’
/home/vess/code/3d/experiments/4dface/4dface/external/superviseddescent/include/superviseddescent/regressors.hpp:294:53: required from here
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:785:49: error: ambiguous template instantiation for ‘struct Eigen::internal::Assignment<Eigen::Matrix<float, -1, -1, 1>, Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >, Eigen::internal::assign_op<float, float>, Eigen::internal::Dense2Dense, void>’
Assignment<ActualDstTypeCleaned,Src,Func>::run(actualDst, src, func);
^
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:823:8: note: candidates are: template<class DstXprType, class SrcXprType, class Functor, class Weak> struct Eigen::internal::Assignment<DstXprType, SrcXprType, Functor, Eigen::internal::Dense2Dense, Weak> [with DstXprType = Eigen::Matrix<float, -1, -1, 1>; SrcXprType = Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >; Functor = Eigen::internal::assign_op<float, float>; Weak = void]
struct Assignment<DstXprType, SrcXprType, Functor, Dense2Dense, Weak>
^
In file included from /usr/include/eigen3/Eigen/LU:35:0,
from /usr/include/eigen3/Eigen/Dense:2,
from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/closest_edge_fitting.hpp:37,
from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/fitting.hpp:34,
from /home/vess/code/3d/experiments/4dface/4dface/apps/4dface.cpp:24:
/usr/include/eigen3/Eigen/src/LU/InverseImpl.h:290:8: note: template<class DstXprType, class XprType> struct Eigen::internal::Assignment<DstXprType, Eigen::Inverse, Eigen::internal::assign_op<typename DstXprType::Scalar, typename SrcXprType::Scalar>, Eigen::internal::Dense2Dense> [with DstXprType = Eigen::Matrix<float, -1, -1, 1>; XprType = Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> >]
struct Assignment<DstXprType, Inverse, internal::assign_op<typename Ds
^
In file included from /usr/include/eigen3/Eigen/QR:36:0,
from /usr/include/eigen3/Eigen/Dense:4,
from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/closest_edge_fitting.hpp:37,
from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/fitting.hpp:34,
from /home/vess/code/3d/experiments/4dface/4dface/apps/4dface.cpp:24:
/usr/include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h:620:8: note: template<class DstXprType, class MatrixType, class Scalar> struct Eigen::internal::Assignment<DstXprType, Eigen::Inverse<Eigen::ColPivHouseholderQR >, Eigen::internal::assign_op<Scalar, Scalar>, Eigen::internal::Dense2Dense> [with DstXprType = Eigen::Matrix<float, -1, -1, 1>; MatrixType = Eigen::Matrix<float, -1, -1, 1>; Scalar = float]
struct Assignment<DstXprType, Inverse<ColPivHouseholderQR >, intern
^
In file included from /usr/include/eigen3/Eigen/Core:387:0,
from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/blendshape_fitting.hpp:27,
from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/fitting.hpp:32,
from /home/vess/code/3d/experiments/4dface/4dface/apps/4dface.cpp:24:
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:785:49: error: incomplete type ‘Eigen::internal::Assignment<Eigen::Matrix<float, -1, -1, 1>, Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >, Eigen::internal::assign_op<float, float>, Eigen::internal::Dense2Dense, void>’ used in nested name specifier
Assignment<ActualDstTypeCleaned,Src,Func>::run(actualDst, src, func);
^
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

Moving the face in rendering window

Hi

I hope you are doing well.

I have a question about that why the face is moving when the speaker starts to talk, I mean the rendered face is moving not just the lips. Could you answer me, please?

Regards

Binding obj and texture

Hi, I'm new to computer vision. Just a quick question, how to display the reconstructed face using the saved obj and png files? Is there any sample code?

Does 4dface fit only to landmarks or edges as well

Hi,

Thank you for making 4dface available.
I notice that 4dface depends on eos under the hood, and eos has been modified so that it fits to both landmarks and edges, based on "Fitting a 3D Morphable Model to Edges: A Comparison Between Hard and Soft Correspondences" .
So my question was, is 4dface currently fitting to both, or just landmarks (as in simple fit of eos) ?

Thank you, and apologies in advance if this isn't the right place to post this.

Gropuing mesh and texture

Hi

my model contains mesh that grouped into submeshes, so I have texture for each mesh, how can I bind these textures to their corresponding meshes?

Compilation error: Opencv undefined reference

I follow the build&run process exactly on Ubuntu 16.04 and encounter the following error when execute the command in build folder:

make

Appreciate any help.

[ 50%] Building CXX object CMakeFiles/4dface.dir/apps/4dface.cpp.o
[100%] Linking CXX executable 4dface
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `cv::String::String(char const*) [clone .constprop.2718]':
4dface.cpp:(.text+0x1c69): undefined reference to `cv::String::allocate(unsigned long)'
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `cv::Mat::Mat(int, int, int, void*, unsigned long) [clone .constprop.2716]':
4dface.cpp:(.text+0x1d6a): undefined reference to `cv::String::allocate(unsigned long)'
4dface.cpp:(.text+0x1db7): undefined reference to `cv::error(int, cv::String const&, char const*, char const*, int)'
4dface.cpp:(.text+0x1dbf): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text+0x1dec): undefined reference to `cv::String::deallocate()'
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `draw_wireframe(cv::Mat, eos::render::Mesh const&, glm::tmat4x4<float, (glm::precision)0>, glm::tmat4x4<float, (glm::precision)0>, glm::tvec4<float, (glm::precision)0>, cv::Scalar_<double>)':
4dface.cpp:(.text+0x29e0): undefined reference to `cv::line(cv::_InputOutputArray const&, cv::Point_<int>, cv::Point_<int>, cv::Scalar_<double> const&, int, int, int)'
4dface.cpp:(.text+0x2a84): undefined reference to `cv::line(cv::_InputOutputArray const&, cv::Point_<int>, cv::Point_<int>, cv::Scalar_<double> const&, int, int, int)'
4dface.cpp:(.text+0x2b05): undefined reference to `cv::line(cv::_InputOutputArray const&, cv::Point_<int>, cv::Point_<int>, cv::Scalar_<double> const&, int, int, int)'
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `rcr::draw_landmarks(cv::Mat, cv::Mat, cv::Scalar_<double>)':
4dface.cpp:(.text+0x2f59): undefined reference to `cv::circle(cv::_InputOutputArray const&, cv::Point_<int>, int, cv::Scalar_<double> const&, int, int, int)'
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `draw_axes_topright(float, float, float, cv::Mat)':
4dface.cpp:(.text+0x6559): undefined reference to `cv::line(cv::_InputOutputArray const&, cv::Point_<int>, cv::Point_<int>, cv::Scalar_<double> const&, int, int, int)'
4dface.cpp:(.text+0x65f8): undefined reference to `cv::line(cv::_InputOutputArray const&, cv::Point_<int>, cv::Point_<int>, cv::Scalar_<double> const&, int, int, int)'
4dface.cpp:(.text+0x6694): undefined reference to `cv::line(cv::_InputOutputArray const&, cv::Point_<int>, cv::Point_<int>, cv::Scalar_<double> const&, int, int, int)'
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `cv::String::String(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
4dface.cpp:(.text._ZN2cv6StringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN2cv6StringC5ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x2f): undefined reference to `cv::String::allocate(unsigned long)'
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi4EEEv':
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi4EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi4EEEv]+0x63): undefined reference to `cv::String::allocate(unsigned long)'
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi4EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi4EEEv]+0x119): undefined reference to `cv::error(int, cv::String const&, char const*, char const*, int)'
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi4EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi4EEEv]+0x121): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi4EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi4EEEv]+0x240): undefined reference to `cv::String::deallocate()'
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi3EEEv':
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi3EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi3EEEv]+0x63): undefined reference to `cv::String::allocate(unsigned long)'
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi3EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi3EEEv]+0x119): undefined reference to `cv::error(int, cv::String const&, char const*, char const*, int)'
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi3EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi3EEEv]+0x121): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi3EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi3EEEv]+0x260): undefined reference to `cv::String::deallocate()'
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi2EEEv':
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi2EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi2EEEv]+0x63): undefined reference to `cv::String::allocate(unsigned long)'
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi2EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi2EEEv]+0x119): undefined reference to `cv::error(int, cv::String const&, char const*, char const*, int)'
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi2EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi2EEEv]+0x121): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text._ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi2EEEv[_ZNK2cv3MatcvNS_3VecIT_XT0_EEEIfLi2EEEv]+0x22c): undefined reference to `cv::String::deallocate()'
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `rcr::HogTransform::operator()(cv::Mat, unsigned long, int)':
4dface.cpp:(.text._ZN3rcr12HogTransformclEN2cv3MatEmi[_ZN3rcr12HogTransformclEN2cv3MatEmi]+0x19d1): undefined reference to `cv::String::allocate(unsigned long)'
4dface.cpp:(.text._ZN3rcr12HogTransformclEN2cv3MatEmi[_ZN3rcr12HogTransformclEN2cv3MatEmi]+0x1a22): undefined reference to `cv::error(int, cv::String const&, char const*, char const*, int)'
4dface.cpp:(.text._ZN3rcr12HogTransformclEN2cv3MatEmi[_ZN3rcr12HogTransformclEN2cv3MatEmi]+0x1a2e): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text._ZN3rcr12HogTransformclEN2cv3MatEmi[_ZN3rcr12HogTransformclEN2cv3MatEmi]+0x1dc4): undefined reference to `cv::String::deallocate()'
CMakeFiles/4dface.dir/apps/4dface.cpp.o: In function `main':
4dface.cpp:(.text.startup+0xa88): undefined reference to `cv::CascadeClassifier::load(cv::String const&)'
4dface.cpp:(.text.startup+0xa96): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0xcd6): undefined reference to `cv::VideoCapture::open(cv::String const&)'
4dface.cpp:(.text.startup+0xce2): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0xe9e): undefined reference to `cv::namedWindow(cv::String const&, int)'
4dface.cpp:(.text.startup+0xeaa): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0xed1): undefined reference to `cv::String::allocate(unsigned long)'
4dface.cpp:(.text.startup+0xeee): undefined reference to `cv::namedWindow(cv::String const&, int)'
4dface.cpp:(.text.startup+0xefa): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0x1390): undefined reference to `cv::CascadeClassifier::detectMultiScale(cv::_InputArray const&, std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >&, double, int, int, cv::Size_<int>, cv::Size_<int>)'
4dface.cpp:(.text.startup+0x2a73): undefined reference to `cv::String::allocate(unsigned long)'
4dface.cpp:(.text.startup+0x2a95): undefined reference to `cv::imshow(cv::String const&, cv::_InputArray const&)'
4dface.cpp:(.text.startup+0x2aa1): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0x2af4): undefined reference to `cv::String::allocate(unsigned long)'
4dface.cpp:(.text.startup+0x2b11): undefined reference to `cv::imshow(cv::String const&, cv::_InputArray const&)'
4dface.cpp:(.text.startup+0x2b1d): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0x3295): undefined reference to `cv::String::allocate(unsigned long)'
4dface.cpp:(.text.startup+0x32dc): undefined reference to `cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)'
4dface.cpp:(.text.startup+0x32e8): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0x3477): undefined reference to `cv::imshow(cv::String const&, cv::_InputArray const&)'
4dface.cpp:(.text.startup+0x3483): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0x39f7): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0x3a21): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0x3b86): undefined reference to `cv::String::deallocate()'
4dface.cpp:(.text.startup+0x3d02): undefined reference to `cv::String::deallocate()'
CMakeFiles/4dface.dir/apps/4dface.cpp.o:4dface.cpp:(.text.startup+0x3d16): more undefined references to `cv::String::deallocate()' follow
collect2: error: ld returned 1 exit status
CMakeFiles/4dface.dir/build.make:101: recipe for target '4dface' failed
make[2]: *** [4dface] 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

DrawFace on Video

Is there a way to instead of drawing the grid, draw the 3d model in that position?

Thanks.

Make Error on Mac

Hi,
Thanks for great work man,,, I'm trying to run it on mac,

cmake -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/opt/local/bin/gcc-mp-5 -DCMAKE_CXX_COMPILER=/opt/local/bin/g++-mp-5 -DOpenCV_haarcascades_DIR=/opt/local/share/OpenCV/haarcascades/ ../4dface/

is ok and done successfully but when i want to make the program i got

Scanning dependencies of target 4dface
[ 50%] Building CXX object CMakeFiles/4dface.dir/apps/4dface.cpp.o
[100%] Linking CXX executable 4dface
Undefined symbols for architecture x86_64:
  "cv::CascadeClassifier::detectMultiScale(cv::_InputArray const&, std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >&, double, int, int, cv::Size_<int>, cv::Size_<int>)", referenced from:
      _main in 4dface.cpp.o
  "cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)", referenced from:
      _main in 4dface.cpp.o
  "boost::program_options::to_internal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*) in 4dface.cpp.o
  "boost::program_options::validation_error::get_template[abi:cxx11](boost::program_options::validation_error::kind_t)", referenced from:
      boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) in 4dface.cpp.o
  "boost::program_options::options_description::options_description(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int)", referenced from:
      _main in 4dface.cpp.o
  "boost::program_options::invalid_option_value::invalid_option_value(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      void boost::program_options::validate<boost::filesystem::path, char>(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, boost::filesystem::path*, long) in 4dface.cpp.o
  "boost::program_options::error_with_option_name::error_with_option_name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)", referenced from:
      boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) in 4dface.cpp.o
  "boost::program_options::arg[abi:cxx11]", referenced from:
      boost::program_options::typed_value<boost::filesystem::path, char>::name() const in 4dface.cpp.o
  "boost::program_options::detail::cmdline::cmdline(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)", referenced from:
      boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*) in 4dface.cpp.o
  "boost::program_options::operator<<(std::basic_ostream<char, std::char_traits<char> >&, boost::program_options::options_description const&)", referenced from:
      _main in 4dface.cpp.o
  "boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const", referenced from:
      vtable for boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value> in 4dface.cpp.o
      vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value> > in 4dface.cpp.o
      vtable for boost::exception_detail::error_info_injector<boost::program_options::validation_error> in 4dface.cpp.o
      vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::validation_error> > in 4dface.cpp.o
      vtable for boost::program_options::validation_error in 4dface.cpp.o
      vtable for boost::program_options::invalid_option_value in 4dface.cpp.o
  "boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool) const", referenced from:
      vtable for boost::program_options::typed_value<boost::filesystem::path, char> in 4dface.cpp.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[2]: *** [4dface] Error 1
make[1]: *** [CMakeFiles/4dface.dir/all] Error 2
make: *** [all] Error 2

btw, my packages are updated,,
any idea abt this error?
Thanks in advance,,,

How can I get the HD expression_blendshapes_XXX.bin

Dear Patrik,

Thanks for your code, which is very helpful for my research. I want to try the HD morphable model. I have downloaded the HD "sfm_shape_16759.bin" and "sfm_shape_29587.bin", but I don't find where to download the corresponding "expresssion_blendshapes_167559.bin" and "expresssion_blendshapes_29587.bin" files, as well as "ibug2did.txt" files? I wonder whether you provide these files for test?

Best Regards
Linwei

Add more PCA coefficients in 4D face to obtain a more accurate morphable model

Hi Patrik,

Thank you very much for your release of this genius application. It works prefectly to construct 3D face model in the real time.

But I have a problem when I want to construct a 3D model from different videos of a large variety of faces , il seems that the constrcuted models always look like the moyen face, which means that the deformation of the morphable model is not so obvious, then I check the shape coefficients which has just 5 elements (Perhaps the number of shape coefficients is not abundant), how can I add more PCA coefficients by detail if I want to get a more accurate model which doesn't look like the moyen face that you have offered ??????

Waiting for your answers.

Best regards

the speed of the method

Hi, I study face tracking recently, and I find your code. I want to use your code on the phone, so the speed is important for me, but the time of my study is limited, so I want to know the fps of process on Andriod or IOS. Would you mind tell me?
Hope your reply. Thank you very much.

An error when run 4dface app

I did the steps as you say in readme.md , and my system is ubuntu 14.04 , but when I run the 4dface app ,it occurs ## "terminate called after throwing an instance of 'std::runtime_error' what(): Error opening given file: ../share/sfm_shape_3448.bin
已放弃 (核心已转储)"

How can I solve the problem ?

every video outputs the same 3d face shape

I have tried 4dface on several videos. All of them when I press 's', outputs the extactly same 3d face model, with different textures. Is that normal? Or I did something wrong?

./4dface -i test.mov

ok, I see the problem. nose shapes are not quite right on eastern faces. like small nose faces.

error when run 4dface

Error reading the RCR model "../share/face_landmarks_model_rcr_68.bin": Failed to read 14797344 bytes from input stream! Read 3905020

Publish pre-built executable

pre-built executable (coming soon)

I would love to try it out! The build steps are nice but a little daunting because my dev environment/knowledge is very far from being able to built this. Could you please publish the binaries?

Build instructions for Mac OS X (using macports)

Just have built it on Mac using macports.

If you'd like to update the doc here are the instructions.

Step 2.
sudo port install gcc5 boost eigen3 cmake

(E.g. mind different names and no need for g++, opencv-data)

Step 3.

cmake -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DOpenCV_haarcascades_DIR=/opt/local/share/OpenCV/haarcascades/ ../4dface/

(Mind proper reference to compiler and library).

I would also mention that w/o command line parameters it uses webcam.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.