Ask Your Question

features2d - xfeatures2d - nonfree differences in OpenCV 3.1.0

asked 2016-09-16 02:01:54 -0600

Finfa811 gravatar image

updated 2016-09-16 02:04:23 -0600


I would like to know why keypoint detectors/feature descriptors are organized in this way. My first thought is that features2d.hpp are basic classes, xfeatures2d.hpp are extra classes and nonfree.hpp are classes that are not free for commercial use (SIFT,SURF).

But if this is the case, shouldn't DAISY (e.g.) be in nonfree.hpp since it's patented too? Is any special license issue the reason to move some classes to opencv_contrib (xfeatures2D), or just a matter of having them as an extra module? If so, why concretely those features and why xfeatures is including nonfree algorithms?

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2016-09-16 02:33:18 -0600

Eduardo gravatar image

nonfree.hpp doesn't exist in OpenCV 3 and contrib module has been introduced in OpenCV 3 to have experimental, unstable or non free algorithms.

Recently, this pull request has introduced the OPENCV_ENABLE_NONFREE option in CMake to enable or disable non free algorithms when you build OpenCV 3.

Currently, only the BM3Dimage denoising algorithm has been protected with this macro.

Fell free to add the macro guard to the corresponding non free algorithms in OpenCV and contribute to OpenCV by submitting the pull requests.

edit flag offensive delete link more


Sure, the macro should be added to more nonfree algorithms. I'll try to contribute when I have a free spot. Thanks for your answer, now the setup is clear for me.

Finfa811 gravatar imageFinfa811 ( 2016-09-16 03:09:05 -0600 )edit

Question Tools

1 follower


Asked: 2016-09-16 02:01:54 -0600

Seen: 1,701 times

Last updated: Sep 16 '16