Need help with opencv_contrib?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

6.9K Stars 5.2K Forks Apache License 2.0 3.9K Commits 473 Opened issues


Repository for OpenCV's extra modules

Services available


Need anything else?

Contributors list

Repository for OpenCV's extra modules

This repository is intended for the development of so-called "extra" modules, contributed functionality. New modules quite often do not have stable API, and they are not well-tested. Thus, they shouldn't be released as a part of official OpenCV distribution, since the library maintains binary compatibility, and tries to provide decent performance and stability.

So, all the new modules should be developed separately, and published in the

repository at first. Later, when the module matures and gains popularity, it is moved to the central OpenCV repository, and the development team provides production-quality support for this module.

How to build OpenCV with extra modules

You can build OpenCV, so it will include the modules from this repository. Contrib modules are under constant development and it is recommended to use them alongside the master branch or latest releases of OpenCV.

Here is the CMake command for you:

$ cd 
$ make -j5

As the result, OpenCV will be built in the

 with all
modules from 
repository. If you don't want all of the modules, use CMake's
options. Like in this example:
$ cmake -DOPENCV_EXTRA_MODULES_PATH=/modules -DBUILD_opencv_legacy=OFF 

If you also want to build the samples from the "samples" folder of each module, also include the "-DBUILD_EXAMPLES=ON" option.

If you prefer using the gui version of cmake (cmake-gui), then, you can add

modules within
core by doing the following:
  1. Start cmake-gui.

  2. Select the opencv source code folder and the folder where binaries will be built (the 2 upper forms of the interface).

  3. Press the

    button. You will see all the opencv build parameters in the central interface.
  4. Browse the parameters and look for the form called

    (use the search form to focus rapidly on it).
  5. Complete this

    by the proper pathname to the
    value using its browse button.
  6. Press the

    button followed by the
    button (the first time, you will be asked which makefile style to use).
  7. Build the

    core with the method you chose (make and make install if you chose Unix makefile at step 6).
  8. To run, linker flags to contrib modules will need to be added to use them in your code/IDE. For example to use the aruco module, "-lopencv_aruco" flag will be added.

Update the repository documentation

In order to keep a clean overview containing all contributed modules, the following files need to be created/adapted:

  1. Update the file under the modules folder. Here, you add your model with a single line description.

  2. Add a inside your own module folder. This README explains which functionality (separate functions) is available, links to the corresponding samples and explains in somewhat more detail what the module is expected to do. If any extra requirements are needed to build the module without problems, add them here also.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.