# Revision history [back]

The developers of SURF hold a patent on their algorithm. However, for scientific purposes you can use it (for commercial ones you need to ask the original developers (not the OpenCV-crew!) about a licence).

Three steps to get it run:

1. build OpenCV with nonfree options, i.e. BUILD_opencv_nonfree needs to be set! (e.g. by using ccmake) or call cmake with -DBUILD_opencv_nonfree. (Note: afaik the standard case is that it is activated - haven't checked the latest version yet though.)
2. include <opencv2/features2d/features2d.hpp> and <opencv2/nonfree/nonfree.hpp>
3. call cv::initModule_nonfree(); before you want to use SURF (or SIFT)

Btw. if you are devloping commercial products always be aware that sth. could be under a patent, e.g. non-local means which is also available in OpenCV - but not part of the nonfree-module - actually also has an EU-patent.

The developers of SURF hold a patent on their algorithm. However, for scientific purposes you can use it (for commercial ones you need have to be aware of the patent, read it carefully and if you may violate it: ask the original developers (not the OpenCV-crew!) about a licence).

Three steps to get it run:

1. build OpenCV with nonfree options, i.e. BUILD_opencv_nonfree needs to be set! (e.g. by using ccmake) or call cmake with -DBUILD_opencv_nonfree. (Note: afaik the standard case is that it is activated - haven't checked the latest version yet though.)
2. include <opencv2/features2d/features2d.hpp> and <opencv2/nonfree/nonfree.hpp>
3. call cv::initModule_nonfree(); before you want to use SURF (or SIFT)

Btw. if you are devloping commercial products always be aware that sth. could be under a patent, e.g. non-local means which is also available in OpenCV - but not part of the nonfree-module - actually also has an EU-patent.

The developers of SURF hold a patent on their algorithm. However, for scientific purposes you can use it (for commercial ones you have to be aware of the patent, read it carefully and if you may violate it: ask the original developers (not the OpenCV-crew!) about a licence).

Three steps to get it run: run (used version: OpenCV 2.4.4):

1. build OpenCV with nonfree options, i.e. BUILD_opencv_nonfree needs to be set! (e.g. by using ccmake) or call cmake with -DBUILD_opencv_nonfree. (Note: afaik the standard case is that it is activated - haven't checked the latest version yet though.)
2. include <opencv2/features2d/features2d.hpp> and <opencv2/nonfree/nonfree.hpp>
3. call cv::initModule_nonfree(); before you want to use SURF (or SIFT)

Btw. if you are devloping commercial products always be aware that sth. could be under a patent, e.g. non-local means which is also available in OpenCV - but not part of the nonfree-module - actually also has an EU-patent.