在OpenCV Python中实现Shi-Tomasi角点检测器
Shi-Tomasi 角点检测器是Harris角点检测器的改进算法。为了实现Shi-Tomasi角点检测器,OpenCV提供了cv2.goodFeaturesToTrack()函数。它可以在图像中检测N个最强角点。
步骤
通过Shi-Tomasi角点检测器检测图像的角点,可以按照下面给出的步骤进行操作−
- 引入所需的库 OpenCV 和 NumPy 。确保已经安装它们。
-
使用 cv2.imread() 方法读取输入图像。指定图像的完整路径。使用 cv2.cvtColor() 方法将输入图像转换为灰度图像。
-
在灰度图像上应用 cv2.goodFeaturesToTrack() 函数。传递合适数量的角点、质量级别和两个角点之间的欧几里得距离作为参数。此函数将该图像中的角点作为浮点数返回。将这些浮点角点转换为整数。
-
用小半径的实心圆在输入图像上绘制角点。
-
显示带有检测到的角点的图像。
让我们看看使用Shi-Tomasi角点检测器在图像中检测角点的示例。
输入图像
我们将在以下示例中使用此图像作为输入文件。
示例
在此示例中,我们使用 Shi-Tomasi 角点检测器检测输入图像中的角点。
# 引入所需的库
import numpy as np
import cv2
# 读取输入图像
img = cv2.imread('building.jpg')
# 将图像转换为灰度
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 在灰度图像上应用Shi-Tomasi角点检测器
# 检测50个最佳角点
corners = cv2.goodFeaturesToTrack(gray,50,0.01,10)
# 将浮点角点转换为整数
corners = np.int0(corners)
# 针对所有角点循环,并绘制为实心圆
for i in corners:
x,y = i.ravel()
cv2.circle(img,(x,y),3,(0
运行上述Python程序时,将生成以下输出窗口−
上面的输出图像显示了使用 Shi-Tomasi 角点检测器检测到的角点,角点以红色显示。