opencv-python角点检测 角点排序 并输出角点坐标
时间: 2024-01-16 10:05:08 浏览: 203
Shi-tomasi角点检测,python实现及基于opencv实现,(角点检测、非极大值抑制)
OpenCV-Python提供了许多角点检测算法,包括Harris角点检测、Shi-Tomasi角点检测、FAST角点检测等。这些算法可以检测图像中的关键点,通常用于特征匹配和目标跟踪等应用。
在检测到角点之后,我们可以对它们进行排序,并输出它们的坐标。下面是一个示例代码,演示如何使用Shi-Tomasi角点检测算法检测角点、将角点按照响应值排序,并输出角点坐标:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('corner.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Shi-Tomasi角点检测
corners = cv2.goodFeaturesToTrack(gray, 25, 0.01, 10)
# 对角点按照响应值排序
corners = np.int0(corners)
corners = sorted(corners, key=lambda x: x[0][1])
# 输出角点坐标
for i in range(len(corners)):
x, y = corners[i][0]
print("Corner {}: ({},{})".format(i+1, x, y))
cv2.circle(img, (x, y), 5, (0, 0, 255), -1)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先读取了一张图像,然后使用Shi-Tomasi角点检测算法检测了25个角点,并将它们存储在corners数组中。接着,我们按照角点的y坐标对它们进行排序,并输出它们的坐标。最后,我们在图像上绘制了检测到的角点,并显示了结果。
阅读全文