The opencv_nonfree module provides very useful features such as two prominent image features SIFT and SURF (including the CUDA’s implementation). In this tutorial, I demonstrate how to install this module into OpenCV 3 on Ubuntu.
Prerequisites
- Remove the old version which has been installed in the system.
- Do not install
opencvviaapt-get - Install
cmake:sudo apt-get install cmake
Installation
-
Download opencv
git clone https://github.com/opencv/opencv -
Do not download the source from homepage.
-
Download the
opencv_contrib:git clone https://github.com/opencv/opencv_contrib -
Check both
opencvandopencv_contribare the latest versions otherwise we can not compile them. -
Extract the source.
-
cd path/to/opencv-source -
Run Cmake: cmake-gui -
In the textbox
Where is the source code, it should be the path of OpenCV -
Where to build the binaries: path to your build directory, e.g,~/opencv/build -
Select
Configure -
When the dialog
CMakeSetuppops up, configure the compiler according to your system. (Most of the time is to selectUnix Makefilesas the generator andUse default native compilersas well.) -
After automatically generating Makefiles, CMake will show all available settings.

-
Select
OPENCV>OPENCV_ENALBLE_NONFREE -
On
OPENCV>OPENCV_EXTRA_MODULES_PATH, give the path to foldermodulesinsideopencv_contrib -
Select
Configurethe project again. On the output window, check whether it producesNon-free algorithms are enabled. -
On
BUILD, make sure that you have selected the appropriate modules for features extraction, e.g,BUILD_opencv_xfeatures2d. -
Configurethe project again. -
Select
Generate -
cd /path/to/opencv/build -
make all(To speed up :make all -j8) -
make install
Done.