OpenMVG is a 3D reconstruction software focusing on automated techniques. This is used in AR and related technologies such as ARKit and Microsoft Hololens, and match-moving in video editing for inserting virtual content. It is also known as photogrammetry, structure from motion (SfM), 3D Computer Vision, and uses multiple view geometry heavily. In this wiki you will find community notes on OpenMVG, to complement the official docs.
Building / Compiling m
- Follow `BUILD.md` closely. For the curious, see https://github.com/openMVG/openMVG/pull/1579 where I describe some pitfalls.
Build Summary for Linux (24Oct19)
- Install the required dependencies (see BUILD.md). Please edit this wiki page if you had to install more things.
- Checkout OpenMVG, and make it lowecase
git clone --recursive https://github.com/openMVG/openMVG.git
- Create a binary folder. I prefer the following setup: to have an openMVG-bin folder parallel to openmvg, outside the source
mkdir openMVG-bin cd openMVG-bin
- Configure and build
cmake -DCMAKE_BUILD_TYPE=RELEASE ../openMVG/src/ cmake --build . --target install
Build for development with GCC and interactively
CC=gcc-5 CXX=g++-5 ccmake../openMVG/src/
Build Summary for Mac (24Oct19)
Mac OS + GCC
GNU is convenient for certain optimizations, extensions and for closely dev with your Linux team mates and cluster nodes.
CC=gcc CXX=g++ ccmake -DCMAKE_INSTALL_PREFIX:STRING=$PWD/openMVG_install ../openMVG/src
With macports you can select to what GCC version the 'gcc' link will point to.
With homebrew, you can use something like gcc-5 to pick the GCC version:
If e.g. gcc 5 is desired:
brew gcc@5 CC=gcc-5 CXX=g++-5 ccmake -DCMAKE_INSTALL_PREFIX:STRING=$PWD/openMVG_install ../openMVG/src
- I carried out many tests with GCC 4-8, and GCC 5 is better for the optimizations I use (--fast-math for trifocal solver).
- For speed, can try '--fast-math' optimization, gcc-5 is very good at that.
- I use BUILD_SHARED_LIBS on. Faster linking. Faster development cycle
OpenMVG as a library
- Careful: If you want to use OpenMVG as a library, you must define your prefix, and not only
- What I do in this case is cd openMVG-bin, then 'ccmake -DCMAKE_INSTALL_PREFIX:STRING=$PWD/install ../openMVG/src"
Same as Linux currently works.
- Colmap: shares similarities with OpenMVG's code, but improved by some of the most famous SfM researchers (Marc Pollefeys' student)