欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python-OpenCV官方教程SIFT算法

程序员文章站 2022-07-02 09:14:35
Harris角点检测等具有旋转不变特性,即使图片发生了旋转,我们也能找到同样的角点。很明显即使图像发生旋转之后角点还是角点。那如果我们对图像进行缩放呢?角点可能就不再是角点了。以下图为例,在一副小图中使用一个小的窗口可以检测到一个角点,但是如果图像被放大,再使用同样的窗口就检测不到角点了。所以在 2004 年,D.Lowe 提出了一个新的算法:尺度不变特征变换(SIFT),这个算法可以帮助我们提取图像中的关键点并计算它们的描述符。SIFT 算法主要由四步构成:(1)空间尺度极值检测(2)关键点定位...

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

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

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

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

import cv2 import numpy as np from matplotlib import pyplot as plt

img = 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()

Python-OpenCV官方教程SIFT算法

  • 注:以上代码适用于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

本文地址:https://blog.csdn.net/Galen_xia/article/details/109025944