代码
OpenCV有一个功能,cv.goodfeaturestotrack()。它通过Shi-Tomasi方法(或哈里斯角检测,如果你指定它)发现图像中最坚固的角落。像往常一样,图像应该是一个灰度图像。然后你指定你想要找到的角数。然后你指定质量级别,这是0-1之间的值,它表示每个人都被拒绝的最小值。然后我们提供了检测到的角之间的最小欧几里得距离。
有了这些信息,函数就会在图像中找到角。质量水平以下的所有角落都被拒绝了。然后根据质量降序排列剩余的角。然后函数取第一个最强的角,把附近的所有角都扔到最小距离的范围内,然后返回N个最坚固的角。
在下面的例子中,我们将尝试找到最好的角:
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('sp.jpg')
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
corners = cv.goodFeaturesToTrack(gray,20,0.01,10)
corners = np.int0(corners)
for i in corners:
x,y = i.ravel()
cv.circle(img,(x,y),3,255,-1)
plt.imshow(img),plt.show()