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

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

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

步骤

通过Shi-Tomasi角点检测器检测图像的角点,可以按照下面给出的步骤进行操作−

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

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

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

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

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

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

输入图像

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

在OpenCV Python中实现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程序时,将生成以下输出窗口−

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV