opencv4.1.0调用SIFT::create()发生错误的原因

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

https://blog.csdn.net/Gordon_Wei/article/details/88920411

发布了142 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_30460949/article/details/101779951