Harris角点检测等具有旋转不变特性,即使图片发生了旋转,我们也能找到同样的角点。很明显即使图像发生旋转之后角点还是角点。那如果我们对图像进行缩放呢?角点可能就不再是角点了。以下图为例,在一副小图中使用一个小的窗口可以检测到一个角点,但是如果图像被放大,再使用同样的窗口就检测不到角点了。

所以在 2004 年,D.Lowe 提出了一个新的算法:尺度不变特征变换(SIFT),这个算法可以帮助我们提取图像中的关键点并计算它们的描述符。

SIFT 算法主要由四步构成:
(1)空间尺度极值检测
(2)关键点定位
(3)为关键点指定方向参数
(4)关键点描述符

现在让我们来看看 OpenCV 中关于 SIFT 的函数。

import cv2
import numpy as np
from matplotlib import pyplot as pltimg = cv2.imread('jiheti.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#创建sift检测器
sift =cv2.xfeatures2d.SIFT_create()
kp,res = sift.detectAndCompute(gray,None)img = cv2.drawKeypoints(img,outImage=img,keypoints=kp, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)plt.imshow(img)
plt.show()

  • 注:以上代码适用于3.0及以上版本。
  • 要使用sift算法,要安装opencv-contrib-python库,opencv-contrib-python库是在原有opencv-python库中扩展了sift等算法的。不可以直接安装opencv-contrib-python,需要先删除原有的opencv-python后再安装,操作如下:(1)pip uninstall opencv-python (2)pip install opencv-contrib-python

OpenCV-Python官方教程-24-SIFT算法相关推荐

  1. 【OpenCV】 ⚠️高手勿入! 半小时学会基本操作 24⚠️ SIFT 算法

    [OpenCV] ⚠️高手勿入! 半小时学会基本操作 24⚠️ SIFT 算法 概述 图像尺度空间 多分辨率金字塔 高斯差分金字塔 计算极值点 SIFT 算法 函数 实战 概述 OpenCV 是一个跨 ...

  2. Python官方教程.pdf

    人生苦短,快学Python! 之前总有人询问有没有Python的学习资料? 这次废了九牛二虎之力,为大家找到了几个最适合小白的Python的学习资料!容易入门,又全面,太好用了. 1. Python官 ...

  3. python官网 中文版-python .. 官方教程中文版.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython python .. 官方教程中文版.pdf105页 ...

  4. opencv经典算子原理总结+SIFT算法原理+特征匹配用于图像拼接

    此文总结一下opencv中的一些常见算子,如SIFT.Canny.及霍夫变换等原理,可用于深度理解特征提取数学原理 1.SIFT(尺度不变性特征转换) SIFT算法的实质是在不同的尺度空间上查找关键点 ...

  5. PYTHON官方教程:Python3.11中文版文档

    Python 每年都会发布新版本,上半年是功能锁定的测试版,年底是最终版本. Python 3.11 的特性集刚刚定稿,测试版本已经发布,开发人员在非生产代码上可以尝试使用这个最新版本,验证它能否在你 ...

  6. 【OpenCV】2020年关于SIFT算法专利版权问题的解决办法

    前言 OpenCV 3.4之后因专利版权问题移除了SIFT/SURF的相关库,因此在使用较新版本的cv库时会报错 error: (-213:The function/feature is not im ...

  7. python 图像无缝拼接,OpenCV Python 系列教程3 - Core 组件

    基本知识 灰度图像的存储方式: image 多通道图像存储方式 image OpenCV 中的通道存储为 BGR 像素值的存储方式 RGB 模式,显示设备采用这种模式 HSV.HLS 将颜色分解成色调 ...

  8. Caffe for Python 官方教程

    导言 本教程中,我们将会利用Caffe官方提供的深度模型--CaffeNet(该模型是基于Krizhevsky等人的模型的)来演示图像识别与分类.我们将分别用CPU和GPU来进行演示,并对比其性能.然 ...

  9. Opencv4 -Python官方教程学习笔记33---BRIEF

    理论 我们知道SIFT使用128维矢量作为描述符.由于它使用浮点数,因此基本上需要512个字节.同样,SURF最少也需要256个字节(用于64像素).为数千个功能部件创建这样的向量会占用大量内存,这对 ...

  10. 快速排序 python菜鸟教程-C 排序算法

    有种排序叫做猴子排序(Bogo Monkey): 1.检查是否排好 2.打乱 3.检查是否排好 4.打乱 5.-- 如果数据稍多的话,几乎是不可能排序好的. 排序代码: #include #inclu ...

最新文章

  1. laravel 在三级分类下拉选框中默认值
  2. 历经8年双11流量洗礼,淘宝开放平台如何攻克技术难关?--转
  3. java 多重属性_最全面的44个Java 性能调优细节
  4. java代码加载_java类中代码加载顺序
  5. 互联网运营数据分析(1):流量分析
  6. (十八)其他数据库对象,视图,序列
  7. python 单向链表逆序_python实现单链表反转(经典笔试题)
  8. 使用DAX(Power BI)的移动平均线
  9. 环境诉讼与当事人适格
  10. 华硕双路服务器主板装系统,华硕双路服务器主板Z8PE-D12X
  11. 计算机无法打开这个应用,win10照片应用打不开提示“无法打开这应用”如何解决...
  12. Attributes should be specified via @SpringBootApplication问题解决
  13. mysql 匹配多个字符,【单选题】在MySQL语句中,可以匹配0个到多个字符的通配符是( ) A. * B. % C. ? D. –...
  14. 计算机win7卡顿如何解决方法,win7电脑玩2D游戏经常发生卡顿六大解决方法
  15. DirectX11进阶5_硬件实例化与视锥体裁剪及鼠标拾取交互
  16. RVM算法的matlab实现
  17. 成都地铁线路图高清大图
  18. 体系结构2_系列机和兼容
  19. 【Proteus仿真】51单片机红外无线通信实验
  20. 【HLL】使用 HyperLogLog 去重案例

热门文章

  1. php给数据库添加记录,数据表操作之添加数据表记录
  2. 每周分享第 17 期
  3. 网狐荣耀代码通读一----登录服务器
  4. protues7 使用笔记
  5. windows 编译xvidcore-1.1.3.tar
  6. 计算机程序设计语言分为机器语言,汇编语言和高级语言三种,简述计算机程序设计语言(机器语言、汇编语言、高级语言)的优缺点。...
  7. Wilcoxon符号秩+秩和检验学习[转载]
  8. 日常提醒(delphi源码)
  9. BeanUtils如何优雅的拷贝List
  10. windows和Linux下西部数据C1门解决方法