OpenCV Python – 如何使用SIFT检测和绘制图像中的关键点?


SIFT(尺度不变特征变换)是一种尺度不变特征描述符。它检测图像中的关键点并计算其描述符。我们首先使用cv2.SIFT_create()创建一个SIFT对象。然后使用sift.detect()检测关键点,其中sift是创建的SIFT对象。要绘制关键点,我们使用cv2.drawKeypoints()

步骤

要使用SIFT算法检测和绘制输入图像中的关键点,您可以按照以下步骤操作

  • 导入所需的库OpenCVNumPy。确保您已安装它们。

  • 使用cv2.imread()方法读取输入图像。指定图像的完整路径。使用cv2.cvtColor()方法将输入图像转换为灰度图像。

  • 使用sift=cv2.SIFT_create()初始化具有默认值的SIFT对象。

  • 检测灰度图像中的关键点。使用sift.detect()。它返回关键点kp

  • 在图像cv2.drawKeypoints()函数上绘制检测到的关键点kp。要绘制丰富的关键点,您可以将flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS作为参数传递。

  • 显示带有绘制的关键点的图像

让我们看看使用SIFT算法检测和绘制输入图像中的关键点的示例。

输入图像

在下面的示例中,我们将使用以下图像作为输入文件。


示例

在此程序中,我们使用SIFT算法检测和绘制输入图像中的关键点。

# import required libraries import cv2 # read input image img = cv2.imread('architecture2.jpg') # convert the image to grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Initiate SIFT object with default values sift = cv2.SIFT_create() # find the keypoints on image (grayscale) kp = sift.detect(gray,None) # draw keypoints in image img2 = cv2.drawKeypoints(gray, kp, None, flags=0) # display the image with keypoints drawn on it cv2.imshow("Keypoints", img2) cv2.waitKey(0) cv2.destroyAllWindows()

执行上述代码后,它将打开以下输出窗口,显示带有绘制的关键点的图像。


请注意,关键点以不同的颜色绘制。您可以将颜色(例如,对于红色(0,0,255))作为参数传递给drawKeypoints()函数,以使用单一颜色绘制关键点。

示例

在此示例中,我们将了解如何使用SIFT算法检测和绘制输入图像中的关键点。

我们将flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS作为参数传递给cv2.drawKeypoints()

# import required libraries import cv2 # read input image img = cv2.imread('architecture2.jpg') # convert the image to grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Initiate SIFT object with default values sift = cv2.SIFT_create() # find the keypoints on image (grayscale) kp = sift.detect(gray,None) # draw keypoints in image img2=cv2.drawKeypoints(gray,kp,None,flags=cv2.DRAW_MATCHES_FLAG S_DRAW_RICH_KEYPOINTS) # display the image with keypoints drawn on it cv2.imshow("Keypoints", img2) cv2.waitKey(0) cv2.destroyAllWindows()

输出

执行上述代码后,它将打开以下输出窗口,显示带有绘制的关键点的图像。


请注意,关键点以不同的尺寸甚至方向绘制。

更新于: 2022-12-05

5K+ 阅读量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.