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

opencv函数提取图片的sift特征并显示(python)

程序员文章站 2022-03-23 12:54:37
...

介绍

【SIFT特征生成的过程】:

  1. 构建尺度空间,检测极值点,获得尺度不变性:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
  2. 特征点过滤并进行精确定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
  3. 为特征点分配方向值:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
  4. 生成特征描述子:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。

代码

import cv2 as cv

img = cv.imread(r"te.jpg")
cv.imshow("original",img)
gray = cv.cvtColor(img,cv.COLOR_RGB2GRAY)

sift = cv.xfeatures2d.SIFT_create()
keypoints, descriptor = sift.detectAndCompute(gray,None)

cv.drawKeypoints(image = img,
                  outImage = img,
                  keypoints = keypoints,
                  color = (51,163,236))
cv.imshow("SIFT",img)

cv.waitKey(0)
cv.destroyAllWindows()

示例

opencv函数提取图片的sift特征并显示(python)