在 OpenCV Python 中实现 Shi-Tomasi 角点检测器

opencvpythonserver side programmingprogramming

Shi-Tomasi 角点检测器是 Harris 角点检测器的增强算法。为了实现 Shi-Tomasi 角点检测器,OpenCV 为我们提供了函数 cv2.goodFeaturesToTrack()。它检测图像中 N 个最强的角点。

步骤

要使用 Shi-Tomasi 角点检测器检测图像中的角点,您可以按照以下步骤操作 -

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

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

  • 在灰度图像上应用 cv2.goodFeaturesToTrack() 函数。将适当数量的角点、质量级别和两个角点之间的欧几里得距离作为参数传递给该方法。此函数将角点作为图像中的浮点数返回。将这些浮点角点转换为整数。

  • 在输入图像上将角点绘制为半径较小的实心圆。

  • 显示检测到角点的图像。

让我们看看使用 Shi-Tomasi 角点检测器检测图像中角点的示例。

输入图像

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


示例

在此示例中,我们使用 Shi-Tomasi 角点检测器检测输入图像中的角点。

# import required libraries import numpy as np import cv2 # read the input image img = cv2.imread('building.jpg') # convert the image to grayscale gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # apply Shi-Tomasi corner detector on gray image # to detect 50 best corners corners = cv2.goodFeaturesToTrack(gray,50,0.01,10) # convert floating points to integers corners = np.int0(corners) # loop over all points and draw corner points as circles for i in corners: x,y = i.ravel() cv2.circle(img,(x,y),3,(0,0,255),-1) # Display image with corner points drawn on it cv2.imshow("Corners", img) cv2.waitKey(0) cv2.destroyAllWindows()

输出

运行上述 Python 程序时,它将生成以下输出窗口 -


上述输出图像显示使用 Shi-Tomasi 角点检测器检测到的角点。角点以红色显示。


相关文章