opencv中的SIFT

最近需要使用opencv里的SIFT算法

查了网上的教程,安装了opencv_contrib扩展模块

大致通过如下形式的语句调用:

xfeatures2d::SIFT::create()

但实际使用时发现会报错,将SIFT改成SURF反而成功运行了。

查看opencv_contrib/modules/xfeatures2d/src后发现,里面只有surf.cpp,没有sift.cpp

翻遍网上教程都没找到解决方法,直到怀疑opencv的版本问题

我用的opencv+opencv_contrib都是3.4.15的

在opencv的github上查看了opencv_contrib的Releases

https://github.com/opencv/opencv_contrib

opencv中的SIFT
发现3.4.10以及此前的版本中,opencv_contrib/modules/xfeatures2d/src内都有sift.cpp,从3.4.11后,

opencv_contrib/modules/xfeatures2d/src中的sift.cpp就消失了

opencv中的SIFT

翻看版本变更记录终于发现可能的原因

opencv中的SIFT
在3.4.11的版本变动中,将SIFT移动进了opencv的主体里了

问题解决,下面总结解决方法:

方法1、使用3.4.10及此前版本的opencv+opencv_contrib,采用网上常见的教程调用方法调用SIFT

include

using namespace cv;

Ptr

方法2、若opencv及opecv_contrib是3.4.11及此后版本,直接在opencv主体调用SIFT即可

include

using namespace cv;

Ptr

实际上区别仅在于:

3.4.10及此前版本中,SIFT在cv::xfeatures2d::SIFT中

3.4.11及此后版本中,SIFT在cv::SIFT中

Original: https://blog.csdn.net/weixin_44179561/article/details/120443489
Author: Zeehoy
Title: opencv中的SIFT

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/704662/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球