opencv4.0.1 的编译完成版本已经没有SIFT和SURF算法了, 一些算法因为专利或者未成熟的原因,不在发布的release版本中了,其中就包括SIFT和SURF,他们因为专利的原因不能用于商业,在2.x版本中,放在在nofree中,而3.x版本开始,这些方法被放入了opencv_contrib中,如果想使用需要自己编译到opencv中。这个算法已经获得专利了。
在后续工作中又需要利用SURF进行实验,代码如下:
Ptr<SURF> surf = SURF::create(100);
但是运行时直接报错,控制台提示如下(Debug模式下):
【这里是坑,可跳到最后看如何解决】这里的意思大概是说,SURF属于收费模块,在CMake编译时要指定:OPENCV_ENABLE_NONFREE,于是作者重新设置CMake编译选项生成VS工程,并完整编译OpenCV库:
参考:
https://blog.csdn.net/Gordon_Wei/article/details/85775328