# OpenMVG: A C++ Library for Structure from Motion and 3D Reconstruction

> A computer vision library providing algorithms, binaries, and pipelines for 3D reconstruction from overlapping images. Built for reproducible research in photogrammetry and structure from motion.

**openMVG/openMVG** — open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.

- Repository: https://github.com/openMVG/openMVG
- Stars: 6,563 · Forks: 1,720
- Language: C++
- License: MPL-2.0
- Published: 2026-09-16 · Updated: 2026-09-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/openmvg-openmvg

## A C++ Library Framework for Structure-from-Motion Research

OpenMVG is a C++ framework for 3D reconstruction from overlapping images. It provides an end-to-end framework with libraries, binaries, and pipelines for structure-from-motion. Input is a set of photographs; output is a sparse point cloud, camera poses, and triangulation. This differs from turnkey software like Metashape or Pix4D: OpenMVG is a library for researchers and engineers who write code to orchestrate the reconstruction pipeline. You select which algorithms to use, build it as source, and integrate it into your own applications. The project's mission is to extend awareness of the power of 3D reconstruction from images and photogrammetry by developing a C++ framework. The credo is "keep it simple, keep it maintainable": OpenMVG is designed to be easy to read, learn, modify, and use, with strict test-driven development supporting the creation of larger trusted systems. Developers can learn from well-tested code that demonstrates correct implementation of academic algorithms.

## Architecture: Libraries, Binaries, and Pipelines

OpenMVG is structured in three layers. The libraries provide core algorithms: image manipulation, features description and matching, feature tracking, camera models, multiple-view-geometry, robust estimation, and structure-from-motion implementations. The binaries are command-line tools that encapsulate unit tasks: scene initialization, feature detection and matching, SfM reconstruction, and camera localization on reconstructed scenes. The pipelines chain binaries together to compute image matching relations, solve the full SfM problem including reconstruction, triangulation, and localization for pose estimation. You can export reconstructed scenes to other Multiple-View-Stereovision frameworks like OpenMVS to compute dense point clouds and textured meshes from the sparse output. This separation of concerns keeps each tool focused: OpenMVG on sparse reconstruction and camera geometry, downstream tools on dense geometry computation and texturing. The project's modular design allows researchers to use individual components independently or build custom pipelines.

## Building and Using as a Library

OpenMVG is written in C++ and requires CMake for building. The repository includes a Dockerfile that shows the build process using Ubuntu 22.04 as the base. To build locally, you install dependencies (CMake, build-essential, graphviz, git, coinor-libclp-dev, libceres-dev, libjpeg-dev, liblemon-dev, libpng-dev, libtiff-dev, python3) and run CMake with flags like `-DCMAKE_BUILD_TYPE=RELEASE`, `-DCMAKE_INSTALL_PREFIX=/opt/openMVG_Build/install`, `-DOpenMVG_BUILD_TESTS=ON`, and various hint directories for dependencies like COINUTILS_INCLUDE_DIR_HINTS, LEMON_INCLUDE_DIR_HINTS, DCLP_INCLUDE_DIR_HINTS, and DOSI_INCLUDE_DIR_HINTS. After CMake configuration, run `make -j 4` to build and `make test` to run the test suite. BUILD.md provides detailed instructions and a tutorial titled "Using OpenMVG as a third-party library dependency with CMake" for integrating OpenMVG into your own projects.

A Wiki with tutorials on OpenMVG data structures and using the library on your own image dataset is available. The library runs on Android, iOS, Linux, macOS, and Windows with consistent build procedures across platforms. The project maintains contact via email (openmvg-team[AT]googlegroups.com) and has a Gitter chat channel for community discussion and contributions.

## Core Algorithms and Academic Foundation

OpenMVG implements several well-known structure-from-motion algorithms published by the authors. Four key papers form the basis of the library's SfM pipeline: Adaptive Structure from Motion with a contrario model estimation (ACCV 2012), Unordered feature tracking (CVMP 2012), Automatic homographic registration of image pairs (IPOL 2012), and Global fusion of relative motions for robust structure from motion (ICCV 2013). Users should cite the appropriate paper based on which submodule is used: AContrario RANSAC, AContrario SfM, GlobalSfM, or Tracks. The project provides a standard BibTeX citation for the overall OpenMVG library itself. For reproducible research, citing the exact algorithms used ensures transparency about the methods underlying 3D reconstructions.

## When OpenMVG Is the Right Tool

OpenMVG is for researchers prototyping new SfM algorithms and engineers building custom reconstruction pipelines for specific use cases. If you need to understand or modify the structure-from-motion process, OpenMVG's readable C++ implementation and test-driven development approach support that goal well. The codebase emphasizes clarity, maintainability, and modifiability over raw performance optimization, making it suitable for educational purposes and research.

OpenMVG is not a finished application ready to use out of the box. It produces sparse point clouds and camera poses but does not generate dense point clouds or textured meshes. Export to other frameworks for these steps. You handle scene initialization, feature extraction, SfM, and camera localization in OpenMVG, then feed the results into OpenMVS or another dense reconstruction tool for final mesh generation and texturing.

## Integration with OpenMVS

A common workflow chains OpenMVG and OpenMVS. OpenMVG solves the structure-from-motion problem: estimating camera positions and sparse point cloud from overlapping images. OpenMVS takes that result and computes a dense point cloud and textured 3D mesh. This separation of concerns keeps each library focused: OpenMVG on sparse reconstruction and algorithm research, OpenMVS on dense geometry computation and mesh generation. The pipeline approach allows each tool to optimize for its specific task without imposing unnecessary constraints on the other.

## Maintenance Status and Release History

OpenMVG development has slowed. The last push was on 2026-08-30, but the most recent release is v2.1 Sablefish, published on 2023-12-28, creating a gap of over two years between release and today. The previous release, v2.0 Rainbow Trout, came out on 2021-10-20, and v1.6 Halibut on 2020-05-13. This gap in releases suggests the library is stable but not under active feature development. Bug fixes and pull requests are still accepted; the project is not archived. A Gitter chat channel remains available for community contact. Contributors are encouraged to submit changes that maintain the "keep it simple, keep it maintainable" philosophy and include appropriate test coverage.

## Comparison with COLMAP

COLMAP is another popular open-source SfM library with a graphical interface and more recent releases. COLMAP provides an end-to-end reconstruction pipeline including dense reconstruction, whereas OpenMVG requires external tools for dense output. COLMAP has a GUI; OpenMVG is command-line and library-based. For researchers who want to understand and modify the SfM algorithm, OpenMVG's readable, published implementations and test-driven development are an advantage. For practitioners needing quick results without code modification, COLMAP's integrated workflow and more active maintenance are more convenient.

## Conclusion

OpenMVG is for computer vision researchers and developers building photogrammetry pipelines who can work with C++ and CMake. Adopt it if you need a modular, readable implementation of structure-from-motion algorithms with publishable scientific backing and can integrate external tools for dense reconstruction. Skip it if you need an end-to-end solution or active feature development: the README recommends exporting to other Multi-View-Stereovision frameworks like OpenMVS for dense point cloud and mesh generation. Verify that the algorithms match your use case by reviewing the cited papers. Check the release date: the last push was 2026-08-30, and the most recent release (v2.1) was 2023-12-28, indicating development has slowed but the library remains stable for established workflows.

## FAQ

### How do I use OpenMVG?

BUILD.md provides build instructions and the Wiki has tutorials on using OpenMVG as a library and on your image dataset. You write C++ code that calls the OpenMVG libraries, or you chain OpenMVG binaries to form a pipeline.

### What is the difference between OpenMVG and OpenMVS?

OpenMVG solves sparse structure-from-motion: it estimates camera poses and produces a sparse point cloud. OpenMVS performs dense reconstruction on that sparse output to generate dense point clouds and textured meshes. They are designed to work together.

### Does OpenMVG work on Windows?

Yes. OpenMVG runs on Android, iOS, Linux, macOS, and Windows. The Dockerfile shows the Linux build process; Windows builds use the same CMake workflow.

### What is the license for OpenMVG?

OpenMVG is licensed under MPL-2.0 (Mozilla Public License 2.0), a permissive license that allows commercial use and modification with minimal restrictions.

## Sources

- [Issues](https://github.com/openMVG/openMVG/issues)
- [License: MPL-2.0](https://github.com/openMVG/openMVG/blob/develop/LICENSE)
- [openMVG/openMVG on GitHub](https://github.com/openMVG/openMVG)
- [README](https://github.com/openMVG/openMVG/blob/develop/README.md)
- [Releases](https://github.com/openMVG/openMVG/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/openmvg-openmvg
