So, you want to build and use Fovis library (which can estimate 3D motion of RGB-D camera or stereo pairs) under Windows?
Quick and dirty how-to compile it:
Create empty root folder for your build – for example name it fovis_win.
Install Prerequirements:
1) Download Eigen and install it.
2) Download cmake-gui and install it.
3) Download cygwin (with patch utility) and install it.
4) Download missing headers for windows from https://code.google.com/p/msinttypes/ and extract them at your root folder into msinttypes subfolder (so both include files would be located at fovis_win/msinttypes). You cannot build fovis without it.
5) For building examples (for examples only, so you can skip it) you need OpenNI install it to default path (c:\program files\openni). Also you would need freenect. You should build it at the root folder, so you will get all libraries and include under fovis_win/frenect/..
6) Download fovis and extract it at the root folder (all files would be located at fovis_win/libfovis).
7) Download archive with patch for fovis – libfovis.patch – and extract it in the folder fovis_win.
(update 02.09.2013 patch with minor fix for compilation with Visual Studio 2012 – libfovis_VS2012.patch)
Run cygwin and type:
cd path-to-fovis_win/libfovis
patch -p1<../libfovis.patch
After that you can create build directory for cmake - fovis_win/libfovis/build.
run cmake-gui && press configure & generate.
It will create Visual Studio project files under build directory.
NOTE:
Default search paths from CMakefiles:
Openni library – c:/program files/Openni.
freenect library – ../freenect/
msinttypes headers- ../msinttypes/
If CMake can’t find something using this path – you should set appropriate path via cmake-gui.
Brief patch overview:
– added export definitions for class/functions for windows target
– fixed minor issues for includes/defines for windows target
– added aligned memory operation for windows target
– tictoc.hpp – added support for windows timing routines
– examples – fixed floor->std::round, working with signal for windows target
11 comments
Skip to comment form
Hi, I followed your instructions but when I try to compile libfovis, there are some C2719 error related to __declspec(align(’16’)). I’m on windows 7 x64 with visual studio 2010, how can I solve them?
Author
Hi,
Did you get any errors when you invoke patch?
Could you let me know full path to fovis’s folder I will reproduce it on my workstation and check it.
Hi,
No patch errors ( http://postimg.org/image/4dfgadfwn/ )
the path is C:\cygwin64\home\User\fovis_win\libfovis ( http://postimg.org/image/nk3oahwm5/ )
Here the log errors with warning enabled: http://speedy.sh/Met9A/withwarning.txt
and with warning disabled: http://speedy.sh/E2k49/withoutwarnings.txt
to download the files click on the name of the txt, near the size of the file.
Same results putting fovis_win folder under c:\cygwin64\. Maybe it could be a problem related the version of visual studio. Do you use visual studio 2012?
Thank you for your answer.
Author
You was right – this issue is occured with Visual Studio 2012 (I have checked with professional version from MS subscriptions).
But it can be yeasily fixed – just add sign of reference to function’s args of type Eigen:Vector2d
refine_feature_patch.hpp
void refineFeatureMatch(PyramidLevel* ref_level,
PyramidLevel* target_level,
Eigen::Vector2d &ref_uv,
Eigen::Vector2d &init_target_uv,
....
refine_feature_patch.cpp
void refineFeatureMatch(PyramidLevel* ref_level,
PyramidLevel* target_level,
Eigen::Vector2d &ref_uv,
Eigen::Vector2d &init_target_uv,
....
stereo_frame.hpp
void rectify(Eigen::Vector2d &xy_in, Eigen::Vector2d * out) {
Thank you for your comment,
I will add fix to patch.
Ok, perfect now it compile. Do you know if it’s possibile to try the example of openni and libfreenect, without going to change the driver every time. I tried the example of libfreenect after a bit of seconds there’s a runtime exception, it seems in libusb. Have you tried to run it?
Thank you for your effort
Author
The only way for switch drivers for device I am familiar with – is to choose manually in windows’s device manager before start of apps.
Probably it can be done via bat-script or in directly via source code of sample but I do not need such functionality.
As I remember, when I played with fovis lib I prefer to use openni version and it works fine (compiled with VS 2010 and 2008).
I think in Monday I will get access to kinect and test freenect samples
Author
Yep, you right, freenect’s sample doesn’t work out of the box.
Ok, never mind, I can use openni.
Thank you very much.
Hi, im also getting errors when trying to cmake Fovis on msvc10
=> ive tried all the steps and the responses but the patch file doesnt seem to be recognized.
What did i do?
I followed all the steps and put the files in exactly the same place as Keiny (according to his screenshot, its under cygwin)
Also in my terminal window, i made exactly the same path, and use the same commands.
However, the command patch -p1<../libfovis.patch was not found.
I have pasted that patch file in all possible directories (from fovis_win to libfovis and several others) but still it does not find it.
Can you help me?
The instructions say to put the patch file above the root directory, but this wont work with the command -p1<../libfovis.patch of course.
Either change the command to p1<../../libfovis.patch or move the patch file into the root folder
Author
Thank you for comment. Fixed 🙂