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

news2024/9/20 15:03:14

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环境导致的错误。。。。。。
在这里插入图片描述

尝试了很多方法都没有用,打算放弃的时候,发现了救星
关于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环境,如下图
在这里插入图片描述然后执行代码,顺利完成,成功显示了一个demo图片!
在这里插入图片描述至此,终于解决了SIFT和SURF在OpenCV中的调用问题!!!!
在这里插入图片描述

文中引用链接皆为学习转载,侵删。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/565188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

架构整洁之道下篇(实现细节)

目录 1.实现细节 1.1.数据库只是实现细节 1.2.Web是实现细节 1.3.应用程序框架是实现细节 1.4.案例分析&#xff1a;视频销售网站 1.5.拾遗 1.5.1.按层封装 1.5.2.按功能封装 1.5.3.端口和适配器 1.5.4.按组件封装 1.5.5.组织形式和封装的区别 2.总结 1.实现细节 …

13_Uboot移植

目录 查找NXP官方的开发板默认配置文件 编译NXP官方开发板对应的uboot 烧写验证与驱动测试 SD卡和EMMC驱动检查 LCD驱动检查 网络驱动 在U-Boot中添加自己的开发板 添加开发板默认配置文件 添加开发板对应的头文件 添加开发板对应的板级文件夹 修改mx6ull_alientek_…

Vue——状态管理库Pinia

写在前面&#xff1a;本文参考小满大牛的pinia专栏 一、Vuex与Pinia Vuex 和 Pinia 均是 Vue.js 的状态管理库&#xff0c;它们为 Vue 应用程序提供了一种集中式的、可预测的状态管理解决方案。 Vuex 是 Vue.js 官方推荐的状态管理库之一。它的核心概念包括 state、mutation…

【C++初阶】类与对象(中)之取地址及const取地址操作符重载

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

架构整洁之道中篇(组件构建原则软件架构)

目录 1.组件构建原则 1.1.组件 1.2.组件聚合 1.3.组件耦合 2.软件架构 2.1.什么是软件架构&#xff1f; 2.2.独立性 2.3.划分边界 2.4.策略与层次 2.5.业务逻辑 2.6.尖叫的软件架构 2.7.整洁架构 2.8.层次与边界 2.9.Main组件 2.10.测试边界 2.11.整洁的嵌入式…

Edgedetect2

边缘检测&#xff0c;检查数据变化&#xff0c;用异或实现 对于 8 位矢量中的每个位&#xff0c;检测输入信号何时从一个时钟周期变为下一个时钟周期&#xff08;检测任何边沿&#xff09;。输出位应在发生 0 到 1 转换后设置周期。 以下是一些示例。为清楚起见&#xff0c;in…

HNU-电路与电子学-小班4

第四次小班讨论 一、题目 1、书 3-41、3-62 2、书 4-23、4-26 3、设计一个时序电路。该电路仅在连续三个或三个以上时钟期间&#xff0c;且两个输入信号 X1 和 X2 相同时&#xff0c;输出信号 Z 为 1&#xff0c;其余情况 Z 为 0。试做出该电路的 Mealy 机和 Moore 机状态…

Windows:设置右键用RStudio打开文件和文件夹

0. 前言 在使用RStudio写R脚本的时候总是要先打开它&#xff0c;再通过它打开脚本和文件夹&#xff0c;感觉不是很方便。由于VSCode以及其他软件都可以整合到右键菜单中打开文件或文件夹&#xff0c;因此就折腾了一下怎么在右键中使用RStudio打开文件&#xff0c;下面是效果展…

简析java JNI技术

前言 认识JNI(Java Native Interface)技术&#xff0c;了解Java调用本地C/C库的简单原理以及一些基本的知识点&#xff1b;自己编写一个自定义的JNI接口。 一、简介 JNI是Java Native Interface的缩写&#xff0c;通过使用 Java本地接口书写程序&#xff0c;可以确保代…

在vue3中如何使用百度地图API(详细步骤+demo示例)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、注册账号、申请成为开发者二、申请密钥AK三、在vue3.0中使用百度地图API 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、注册账号…

htb Mailroom里容器(Debian 11)图形界面显示在本机kali上,socat,unix转发,容器里不安装xrdp

在攻击机kali(ip:10.10.14.18)上运行chisel服务端: chisel server -v -p 60080 --socks5 在靶机的虚拟机(ssh root10.10.11.209)上,执行docker exec containers_sites_1 /bin/bash,进入容器里 进入容器后,先下载kali上的socat和chisel: curl -o /bin/chisel http://10.10.14…

使用JMeter+Grafana+Influxdb搭建可视化性能测试监控平台

【背景说明】 使用jmeter进行性能测试时&#xff0c;工具自带的查看结果方式往往不够直观和明了&#xff0c;所以我们需要搭建一个可视化监控平台来完成结果监控&#xff0c;这里我们采用三种JMeterGrafanaInfluxdb的方法来完成平台搭建 【实现原理】 通过influxdb数据库存储…

初学用于华为鸿蒙系统(HarmonyOS)的编程开发工具HUAWEI DevEco Studio:你好,鴻蒙~

本文是6月6日博文“初学用于华为鸿蒙系统(HarmonyOS)的编程开发工具HUAWEI DevEco Studio”的续篇。 成功通过华为开发者联盟的实名认证审核后&#xff0c;使用远程模拟器(Remote Emulator)运行程序。 步骤如下&#xff1a; 菜单Tools - Device Manager&#xff1a; 点击设备…

Vue列表渲染

1&#xff0c;回顾HTML列表&#xff1f; 答&#xff1a;列表分为顺序列表ol&#xff0c;无序列表ul&#xff0c;用于在网页上以表格的形式进行数据展示&#xff0c;数据放在单元格之中&#xff0c;可以用于布局或者展示某个具体对象的信息。li表示列表的每一项。自定义列表为dl…

C++多态详解(虚函数重写、接口继承、虚函数表详解)

目录 1. 多态概念 2. 多态的定义及实现 2.1 多态的构成条件 2.2 虚函数重写 2.3 C11 override和final 2.4 重载、覆盖&#xff08;重写&#xff09;、隐藏&#xff08;重定义&#xff09;的对比 3. 抽象类 3.1 概念 3.2 接口继承和实现继承 4. 多态的原理 4.1 虚函数表 4.2…

ESP32设备驱动-VCNL4010光传感器驱动

VCNL4010光传感器驱动 文章目录 VCNL4010光传感器驱动1、VCNL4010介绍2、硬件准备3、软件准备4、驱动实现1、VCNL4010介绍 VCNL4010 专为更短的距离而设计,不超过 200 毫米(约 7.5" ) 并且根据我们的实验,我们发现它在大约 10-150 毫米的距离内效果最佳。这对于检测手…

水表远程监控系统有什么功能吗?

水表远程监控系统是通过远程传输水表数据&#xff0c;实现对水表的远程监控和管理的一种智能化系统。它主要具备以下功能&#xff1a; 1.远程抄表功能&#xff1a;通过远程传输技术&#xff0c;实现对水表的远程抄表和监控&#xff0c;无需人工上门抄表&#xff0c;节省人力成本…

ChatGPT超详细教程-提问、使用、技巧~

huChatGPT已经面世很长时间了&#xff0c;很多人已经开始依赖ChatGPT了&#xff0c;逐渐应用到自己的生活工作学习中去了&#xff0c;然而还有很多人嚷嚷着不好用&#xff0c;真的不好用的话为什么广受好评&#xff0c;还有很多人一直在用&#xff1f; 当然也有可能真的对你没…

uni-app基础

1、基本语言和开发规范 uni-app代码编写&#xff0c;基本语言包括js、vue、css。以及ts、scss等css预编译器。 在app端&#xff0c;还支持原生渲染的nvue&#xff0c;以及可以编译为kotlin和swift的uts。 但是&#xff0c;DCloud提供了使用js编写服务器代码的uniCloud云引擎…

Unity Lighting Mode

在Light中Mode设置为Mixed时&#xff0c;Lighting Mode&#xff08;在Window->Rendering->Light->Scene&#xff09;有三种选项如下图&#xff1a; Baked Indirect 烘焙间接光,效果最好性能最耗 混合光源照亮的动态游戏对象将接收&#xff1a; 实时直接光照。烘焙间接…