OpenCV Python 特征检测

OpenCV Python 特征检测

在图像处理的上下文中,特征是图像中关键区域的数学表示。它们是图像中视觉内容的向量表示。

特征使得能够对它们进行数学运算。各种计算机视觉应用包括物体检测,运动估计,分割,图像对齐等。

任何图像中的显著特征包括边缘,角点或图像的某些部分。OpenCV支持 哈里斯角点检测Shi-Tomasi角点检测 算法。OpenCV库还提供实现 SIFT(尺度不变特征变换)SURF(加速稳健特征)FAST角点检测算法。

哈里斯和Shi-Tomasi算法是旋转不变的。即使图像旋转,我们也可以找到相同的角点。但当图像被放大时,如果图像中的一个角点不是角点。下面的图形描述了相同的情况。

OpenCV Python 特征检测

D.Lowe(David G. Lowe)的新算法, 尺度不变特征转换(Scale Invariant Feature Transform) (SIFT)提取关键点并计算其描述符。

这通过以下步骤实现:

  • 尺度空间极值检测。
  • 关键点定位。
  • 方向分配。
  • 关键点描述符。
  • 关键点匹配。

就SIFT在OpenCV中的实现而言,它从加载图像并将其转换为灰度开始。使用 cv.SHIFT_create() 函数创建一个SIFT对象。

示例

调用其 detect() 方法可以获取在原始图像上绘制的关键点。以下代码实现了此过程。

import numpy as np
import cv2 as cv
img = cv.imread('home.jpg')
gray= cv.cvtColor(img,cv.COLOR_BGR2GRAY)
sift = cv.SIFT_create()
kp = sift.detect(gray,None)
img=cv.drawKeypoints(gray,kp,img)
cv.imwrite('keypoints.jpg',img)

输出

原始图像和绘制了关键点的图像如下所示 –

这是一张 原始图像

OpenCV Python 特征检测

下面给出了一张图片,该图片具有关键点。

OpenCV Python 特征检测

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程