最近需要使用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
发现3.4.10以及此前的版本中,opencv_contrib/modules/xfeatures2d/src内都有sift.cpp,从3.4.11后,
opencv_contrib/modules/xfeatures2d/src中的sift.cpp就消失了
翻看版本变更记录终于发现可能的原因
在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/
转载文章受原作者版权保护。转载请注明原作者出处!