Skip to content
Open-source C++ code for the FAB-MAP visual place recognition algorithm
Branch: master
Clone or download
arrenglover Opencv3dev (#20)
* updated library for opencv3.0

* check for 2.4 specifically for non-free

* Cmake displays OpenCV version

* update CMAKE to detect non-free modules

* Update

* added new feature detectors to cli and settings file

* Update CMakeLists.txt
Latest commit 2186bfe Feb 6, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
doxygen Updated cmake to use OpenCVConfig.cmake. Nov 3, 2014
samples Opencv3dev (#20) Feb 6, 2019
src Opencv3dev (#20) Feb 6, 2019
.gitignore adding files for updated MSC but not integrated into project yet Nov 11, 2014
.travis.yml Fixing the quiet install? Nov 20, 2014
CMakeLists.txt Opencv3dev (#20) Feb 6, 2019
LICENSE updated license headers on files Nov 3, 2014 Opencv3dev (#20) Feb 6, 2019

openFABMAP openfabmap

Open Source C++ Code for the FAB-MAP Algorithm

St. Lucia Multiple Times of Day Dataset

!Now Supporting OpenCV 3.0!

See the Wiki for tips!

   author = {Glover, A. and Maddern, W. and Warren, M. and Reid, S. and Milford, M. and Wyeth, G.},
   title = {OpenFABMAP: An Open Source Toolbox for Appearance-based Loop Closure Detection},
   booktitle = {The International Conference on Robotics and Automation},
   address = {St Paul, Minnesota},
   publisher = {IEEE},
   year = {2011}

OpenFABMAP Glover et. al. 2012 is an open-source, OpenCV-only dependent, version of the popular Fast Appearance-based Mapping (FAB-MAP) algorithm [Cummins & Newman 2008]( Glover et al. 2010). OpenFABMAP was developed from the ground-up following FAB-MAP publications. The original FAB-MAP algorithm is now also open-source but requires alternative project dependencies.

FAB-MAP is a Simultaneous Localisation and Mapping algorithm which operates solely in appearance space. FAB-MAP performs location matching between places that have been visited within the world as well as providing a measure of the probability of being at a new, previously unvisited location. Camera images form the sole input to the system, from which OpenCV's feature extraction methods are used to develop bag-of-words representations for the Bayesian comparison technique.

The code has implementations of

An overview of OpenFABMAP Glover et. al. 2012 or the original implementation/use Glover et al. 2010.

As of the latest version, openFABMAP is dependent solely on OpenCV 2.3 or higher. The project has a CMake build environment for general use on both Linux and Windows systems. OpenFABMAP is also designed to integrate with ROS. See the CyPhy-ROS page for a package that has implemented openFABMAP as a ROS node.

The original googlecode project page was here


Linux (g++)

  1. install cmake sudo apt install cmake
  2. install opencv sudo apt install libopencv-dev
  3. get the openFABMAP code git clone
  4. make the build directory mkdir openfabmap/build && cd openfabmap/build
  5. use cmake to compile the makefile cmake ... note: the output will tell you which version of opencv you are using and if you are using the "non-free" modules
  6. make the project make
  7. view/modify the settings file gedit ../samples/settings.yml
  8. run the command line tool bin/openFABMAPcli -s ../samples/settings.yml

OpenCV non-free for OpenCV 3.4

  1. clone opencv_contrib
  2. clone opencv repository
  3. checkout version 3.4
  4. mkdir build && cd build
  5. cmake .. -DOPENCV_EXTRA_MODULES_PATH='path_to/opencv_contrib/modules' -DBUILD_opencv_xfeatures2d=ON -DOPENCV_ENABLE_NONFREE=ON
  6. make

Windows (Visual Studio 2008)

  1. install openCV2.3
  2. install cmake
  3. open the cmake gui, specify the source directory (the directory this README is in), a build directory for the code, and click configure
  4. you may have to specify the location of opencv2.3 in UngroupedEntries->OPENCV_PATH.
  5. click configure in the cmake gui again
  6. click generate
  7. open the visual studio solution, for default running right-click on openFABMAPexe project and select 'Set as StartUp project'. Compile openFABMAP within Visual studio.
  8. add required .dll files from openCV2.3 to your build/bin directory (respective debug versions for debug mode).
  9. you also may need an extra tbb .dll due to OpenCV bug which can be downloaded here
  10. under openFABMAPcli->properties->Debugging->command arguments specify the path to the settings file (e.g. "-s samples\settings.yml")
  11. Alter the settings file for your data
  12. run exampleopenFABMAP in your build/bin directory (respective debug versions for debug mode).


  • Arren GLover
  • Will Maddern
  • Kirk MacTavish
You can’t perform that action at this time.