在 Python OpenCV 4.2.0(2020 年)中使用 SIFT(或替代方案)

2024-02-20

我正在尝试使用 SIFT 与 Python 进行特征检测,但它不再是 OpenCV 的一部分orOpenCV 贡献。

使用 OpenCV opencv-contrib-python (两个版本 4.2.0.34,这个问题的最新版本),我得到:

>>> import cv2
>>> cv2.SIFT_create()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'cv2.cv2' has no attribute 'SIFT_create'
>>> cv2.xfeatures2d.SIFT_create()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1210: 
 error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in 
 this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 
 'cv::xfeatures2d::SIFT::create'

我发现的每个相关答案都建议使用 contrib 或旧版本,但这些都不再起作用。

从源代码构建它以按照错误指示恢复 SIFT 更容易,还是使用替代方案更容易?我该怎么做?我所需要的只是某种进行特征检测的方法,最好是尺度不变的。

这个问题 https://stackoverflow.com/questions/10157806/are-there-any-fast-alternatives-to-surf-and-sift-for-scale-invariant-feature-ext提到了 SIFT 替代方案,但已经非常过时了(最佳答案大约 8 年前)。 2020年我们现在能做什么?

编辑显示 OpenCV 3 不起作用:

尝试安装 OpenCV 3:

>>> pip install opencv-python==3 
ERROR: Could not find a version that satisfies the requirement opencv-python==3
(from versions: 3.4.2.16, 3.4.2.17, 3.4.3.18, 3.4.4.19, 3.4.5.20, 3.4.6.27,
3.4.7.28, 3.4.8.29, 3.4.9.31, 3.4.9.33, 4.0.0.21, 4.0.1.23, 4.0.1.24, 4.1.0.25,
4.1.1.26, 4.1.2.30, 4.2.0.32, 4.2.0.34)
ERROR: No matching distribution found for opencv-python==3
>>> pip install opencv-python==3.4.2.16  

然后在Python中:

>>> import cv2
>>> print(cv2.__version__)
3.4.2
>>> cv2.SIFT_create()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'cv2.cv2' has no attribute 'SIFT_create'

SIFT 的专利于 2020 年 3 月到期。但将 SIFT 移至免费开源集合中可能无法更新 opencv。

看这个问题:https://github.com/skvark/opencv-python/issues/126 https://github.com/skvark/opencv-python/issues/126

使用非自由组件重建:

git clone --recursive https://github.com/skvark/opencv-python.git
cd opencv-python
export CMAKE_ARGS="-DOPENCV_ENABLE_NONFREE=ON"
python setup.py bdist_wheel
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python OpenCV 4.2.0(2020 年)中使用 SIFT(或替代方案) 的相关文章

  • Python - 比较同一字典中的值

    我有一本字典 d Trump MAGA FollowTheMoney Clinton dems Clinton Stein FollowTheMoney Atlanta 我想删除字符串列表中的重复字符串 该字符串是键的值 对于这个例子 期望
  • 如何在 Matplotlib 饼图周围绘制箭头以将每个标签指向圆圈中各自的部分?

    我一直在用 Matplotlib 绘制一些图表 我有一个饼图 想要在图表周围绘制箭头 使每个标签都指向图表 我有一个例子 这是我当前的代码 import matplotlib pyplot as plt plt rcParams font
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • python multiprocessing 设置生成进程等待

    是否可以生成一些进程并将生成进程设置为等待生成的进程完成 下面是我用过的一个例子 import multiprocessing import time import sys def daemon p multiprocessing curr
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的
  • 如何使用 Boto3 启动具有 IAM 角色的 EC2 实例?

    我无法弄清楚如何使用指定的 IAM 角色在 Boto3 中启动 EC2 实例 以下是迄今为止我如何成功创建实例的一些示例代码 import boto3 ec2 boto3 resource ec2 region name us west 2
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有

随机推荐

  • 如何在屏幕旋转后禁用/避免片段自定义动画

    我刚刚发现 每次在片段上 setRetainInstance true 时 它都会按预期工作 保留片段数据 但这会导致片段的自定义动画在屏幕旋转后再次执行 有没有办法避免 禁用屏幕旋转时的这些动画 该片段是使用以下动画创建的 setCust
  • 如何放置我的网页以便我可以在谷歌搜索中找到我的页面? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何上传我的网页以便我可以在 Google 搜索中找到我的网页 搜索引擎优化可能是一个耗时的过程 但其中有几个因素 您的网站应该具有良好的关键字丰富的
  • 在Python中将命名列表向量从R翻译成rpy2?

    python 中的 Rpy2 中的以下 R 代码相当于什么 Var1 c navy darkgreen names Var1 c Class1 Class2 ann colors list Var1 Var1 目前尚不清楚是什么ann co
  • php ssh2_exec 不执行“su”命令

    我在 php 的 ssh2 中获得了很多乐趣 我正在通过 ssh ing 进入 localhost 运行 ubuntu 进行测试 我已经成功地使用我的用户名 而不是 root 进行连接和身份验证 并且一些命令 例如 ls 返回一些信息 这是
  • 单击 iAd 时暂停 SpriteKit 场景

    我正在研究一个SpriteKit项目 我正在努力在点击 iAd 时暂停游戏 并在点击 iAd 时取消暂停iAd被解雇 主要问题是从 ViewController 暂停场景 我知道如果我想从 ViewController 暂停场景Scene
  • 使用子进程时如何限制程序的执行时间?

    我想使用子进程来运行程序 并且需要限制执行时间 例如 如果它运行超过2秒我想杀死它 对于普通程序 kill 效果很好 但如果我尝试跑步 usr bin time something kill 并不能真正杀死程序 我下面的代码似乎不能很好地工
  • 谷歌表格。如何获取实际范围大小(以像素为单位)

    我的脚本将选定的范围转换为图像 请参见 https docs google com spreadsheets d 1qNQ6iCMoBCQgJzBB63ymtBQ6BedXZFhjgZZKGItjeVA copy 它首先创建一个公共 PDF
  • 远离 CSS 的抽象

    许多框架试图从 HTML 自定义标签 JSF 组件系统 中抽象出来 以便更轻松地处理特定的问题 你们使用过的东西中是否有类似的 CSS 概念 它可以为你带来很多跨浏览器的魔力 支持类似的变量 为什么我每次想要那种颜色时都必须输入 3c5c8
  • 用点或连字符填充标签之间的可用空间

    我有一个带有标签的页面 这些标签包含在 div 中 标签有一个变量 我想用字符 点或 填充两者之间的空格 例如 我的标签文本 1 这里有一些文本 我的文字2 另一篇文字 如果您发现两个文本都是合理的 或者至少我尝试过 则可能是字符计数问题
  • Android 7 中的 ContextMenu 位置混乱

    我有一个应用程序 其中有一个简单的列表视图和上下文菜单 Android 7 之前的版本 一切看起来都正常 when clicking an item at the bottom of the list when clicking an it
  • 这些奇怪的环境变量是什么?

    I use GetEnvironmentString 获取程序的环境变量 每个程序的第一个结果都是这样的 我不知道这是什么意思 这是代码 LPWCH lpEnvString GetEnvironmentStringsW LPWSTR lps
  • 通过 Chrome 的自定义选项卡发布数据

    我想通过 CustomTab 或 Chrome 发送 POST HTTP 请求 然后最终显示页面 我进行了很多研究 但没有办法 有办法吗 可以通过 Volley 发送 POST 请求然后最终在浏览器中显示响应吗 我为此写了一个解决方法 小心
  • Wireshark 中以太网帧末尾的 0 字节是什么?

    after ARP protocol in a frame there are many 0 bytes Does anyone know the reason for the existence of these 0 bytes 检查以太
  • 将所有数据从一个订阅传输到另一订阅

    如何将我的所有云服务 数据库 虚拟机和 Blob 存储转移到我新订阅的另一个订阅 有没有更简单的方法 更新 2016 年 6 月 6 日 这个答案相当旧了 必须寻求 Azure 支持才能将数据从一项订阅传输到另一项订阅 此外 Azure 门
  • 如何从 bigcommerce API(地面、快递)获取订单“送货方式”?

    如何从 bigcommerce API 地面 快递 获取订单 送货方式 客户下订单时选择的运输方式 Thanks 参考这个page https developer bigcommerce com api stores v2 orders s
  • ECMAScript 规范:规范中问号的含义

    我见过很多这样的情况Let value be Return sth在规范中 example https tc39 github io ecma262 sec tonumber 有谁知道 的含义是什么 From 算法约定 http www e
  • 在 C# 中从字符串调用函数

    我知道在 php 中你可以进行如下调用 function name hello function name function hello echo hello 这在 Net 中可能吗 是的 您可以使用反射 像这样的事情 Type thisT
  • 同一页面上有多个 iScroll 元素

    我正在使用 jQtouch 和 iScroll 制作一个移动网站 我不想使用 iScroll 获得多个可滚动区域 但只有列表可以使用 iScroll 我尝试过这个 var scroll1 scroll2 function loaded sc
  • Spark 抛出 java.util.NoSuchElementException:找不到密钥:67

    在 Zeppelin 中运行 Spark 平分 kmmeans 算法 I transform my data using the TF IDF algorithm val idf new IDF minFreq fit data val h
  • 在 Python OpenCV 4.2.0(2020 年)中使用 SIFT(或替代方案)

    我正在尝试使用 SIFT 与 Python 进行特征检测 但它不再是 OpenCV 的一部分orOpenCV 贡献 使用 OpenCV opencv contrib python 两个版本 4 2 0 34 这个问题的最新版本 我得到 gt