OpenCV使用SURF和SIFT算法报错解决记录

这篇具有很好参考价值的文章主要介绍了OpenCV使用SURF和SIFT算法报错解决记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OpenCV使用SURF和SIFT算法报错解决记录

1.报错代码,使用以下两种写法都会报错
# 创建SIFT和SURF特征提取器
# 写法1
sift = cv2.xfeatures2d.SIFT_create()
surf = cv2.xfeatures2d.SURF_create()
# 写法2
sift = cv2.SIFT_create()
surf = cv2.SURF_create()

第一种报错AttributeError: module ‘cv2’ has no attribute ‘xfeatures2d’

第二种报错AttributeError: module ‘cv2’ has no attribute ‘SURF_create’

2.查找网络上的解决办法,大部分分为两种
  • SIFT和SURF算法申请了专利,所以OpenCV新版本删除了这两个算法,所以需要回退到OpenCV3开头的版本或者OpenCV4开头的版本

  • 缺少opencv-contrib-python,pip install opencv-contrib-python即可解决(亲测没用

所以主要使用回退OpenCV版本的各种方法:

(1)直接卸载之前环境中的OpenCV,然后安装对应版本的OpenCV
# 卸载之前的OpenCV 
pip uninstall opencv-python
# 安装指定版本的OpenCV和pencv-contrib-python
pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16

执行完以上代码之后,使用第一种写法调用SIFT和SURF算法,即

sift = cv2.xfeatures2d.SIFT_create()
surf = cv2.xfeatures2d.SURF_create()
(2)创建新的虚拟环境,设置python版本为3.6,然后新安装需要的包

因为我使用的虚拟环境中的python是3.9版本的,所以在安装3.4.2.16或者其他的不是最新版本的OpenCV时,会报以下错误:

Traceback (most recent call last):
File “< string>”, line 1, in < module >File “/tmp/pip-build-ilgdiy_6/opencv-contrib-python/setup.py”, line 10, in < module >import skbuildModuleNotFoundError: No module named ‘skbuild’

或者报错
note: This error originates from a subprocess, and is likely not a problem with pip.error: legacy-install-failure
× Encountered error while trying to install package.
╰─> opencv-python
note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

或者
Looking in indexes: https://pypi.anaconda.org/sts_dileeppj/simple
ERROR: Could not find a version that satisfies the requirement opencv-python4.4.0 (from versions: none)
ERROR: No matching distribution found for opencv-python
4.4.0
WARNING: Ignoring invalid distribution -pencv-python (c:\users\d

找了各种解决办法,
清除缓存,然后重新安装OpenCV

# 清除缓存
pip cache purge

安装scikit-build,参见https://zhuanlan.zhihu.com/p/491491510

scikit-build

甚至说是因为有多个python环境导致的错误。。。。。。
OpenCV使用SURF和SIFT算法报错解决记录

尝试了很多方法都没有用,打算放弃的时候,发现了救星
关于python-opencv的SIFT,SURF算法调用错误
在这篇文章中发现可能安装不成功是因为python版本太高,所以安装不了OpenCV3的版本,然后创建了新的虚拟环境,设置python版本为3.6 ,然后在新的虚拟环境中安装OpenCV

pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16

因为是使用jupyter notebook,所以把新的虚拟环境应用到jupyter,参考博文是https://blog.csdn.net/fengLying/article/details/114929571

然后,在jupyter中新建文件时选择新建的opencv环境,如下图
OpenCV使用SURF和SIFT算法报错解决记录然后执行代码,顺利完成,成功显示了一个demo图片!
OpenCV使用SURF和SIFT算法报错解决记录至此,终于解决了SIFT和SURF在OpenCV中的调用问题!!!!
OpenCV使用SURF和SIFT算法报错解决记录

文中引用链接皆为学习转载,侵删。文章来源地址https://www.toymoban.com/news/detail-469671.html

到了这里,关于OpenCV使用SURF和SIFT算法报错解决记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV Python – 使用SIFT算法实现两张图片的特征匹配

    1.要实现在大图中找到任意旋转、缩放等情况下的小图位置,可以使用特征匹配算法,如 SIFT (尺度不变特征变换) 或 SURF (加速稳健特征)。这些算法可以在不同尺度和旋转情况下寻找匹配的特征点 2.我们使用了 SIFT 算法检测和匹配特征点,然后使用 RANSAC 算法计算透视变换矩阵

    2024年02月06日
    浏览(36)
  • 【教程】Autojs使用OpenCV进行SIFT/BRISK等算法进行图像匹配

    转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn]         此代码可以替代内置的images.findImage函数使用,但可能会误匹配,如果是对匹配结果要求比较高的,还是得谨慎使用。

    2024年02月07日
    浏览(33)
  • OpenCV-Python(32):SIFT算法

    学习SIFT 算法的概念 学习在图像中查找SIFT关键点和描述符         在前面两节我们学习了一些角点检测技术:比如Harris 等。它们具有 旋转不变特性, 即使图片发生了旋转,我们也能找到同样的角点。很明显即使图像发生旋转之后角点还是角点。但是,如果我们对图像进

    2024年02月02日
    浏览(32)
  • 学习笔记:Opencv实现图像特征提取算法SIFT

    2023.8.19 为了在暑假内实现深度学习的进阶学习,特意学习一下传统算法,分享学习心得,记录学习日常 SIFT的百科: SIFT = Scale Invariant Feature Transform, 尺度不变特征转换 全网最详细SIFT算法原理实现_ssift算法_Tc.小浩的博客-CSDN博客 在环境配置中要配置opencv: pip install opencv-c

    2024年02月12日
    浏览(32)
  • OpenCV报错:AttributeError: module ‘cv2.cv2‘ has no attribute ‘SIFT_create‘

    报错原因:opencv将SIFT等算法整合到xfeatures2d集合里面了。 改为:

    2024年02月07日
    浏览(31)
  • SIFT 算法 | 如何在 Python 中使用 SIFT 进行图像匹配

    人类通过记忆和理解来识别物体、人和图像。你看到某件事的次数越多,你就越容易记住它。此外,每当一个图像在你的脑海中弹出时,它就会将该项目或图像与一堆相关的图像或事物联系起来。如果我告诉你我们可以使用一种称为 SIFT 算法的技术来教机器做同样的事情呢?

    2024年02月13日
    浏览(29)
  • OpenCV Python – 使用SIFT实现两张图片的特征匹配

     我们使用尺度不变特征变换(  SIFT  )特征描述符和暴力匹配算法实现两张图像的特征匹配。其中,  SIFT  用于找到图像中的关键点和描述符,而  暴力匹配算法  用于在两张图像中匹配描述符。 要使用  SIFT  特征检查器和  暴力  匹配算法实现两张图像的特征匹配,可

    2024年02月03日
    浏览(38)
  • Python与OpenCV环境中,借助SIFT、单应性、KNN以及Ransac技术进行实现的图像拼接算法详细解析及应用

    一、引言 在当今数字化时代,图像处理技术的重要性不言而喻。它在无人驾驶、计算机视觉、人脸识别等领域发挥着关键作用。作为图像处理的一个重要部分,图像拼接算法是实现广阔视野图像的重要手段。今天我们将会讲解在Python和OpenCV环境下,如何使用SIFT、单应性、K

    2024年02月15日
    浏览(30)
  • 【OpenCV】SURF图像拼接和Stitcher拼接

    介绍两种图像拼接的方法,一种是SURF算法的图像拼接,另一种是Stitcher硬拼接 首先先从简单的讲起 可以实现多张图片一起拼接,只要两行代码就可以实现拼接; 1.首先准备多张图片,放入向量容器中 2. 创建Stitcher对象,调用拼接算法 第一行false是表示不使用gpu加速; 注:

    2024年02月04日
    浏览(30)
  • Opencv算法记录:如何使用Opencv求解圆与轮廓、直线的交点

    GUN C编译器拓展语法学习笔记(一)GNU C特殊语法部分详解 GUN C编译器拓展语法学习笔记(二)属性声明 GUN C编译器拓展语法学习笔记(三)内联函数、内建函数与可变参数宏 数组存储与指针学习笔记(一)数据类型与存储、数据对齐、数据移植、typedef   最近涉及到Opencv用来求

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包