Python 如何计算通过Harris角点检测检测到的特征数?

Python 如何计算通过Harris角点检测检测到的特征数?,python,opencv,image-processing,feature-extraction,feature-detection,Python,Opencv,Image Processing,Feature Extraction,Feature Detection,我对OpenCV和Python还是新手。我正在使用以下哈里斯角点检测代码。如您所见,结果也在下面给出。现在,我如何计算被检测为这些红点的特征的数量?请注意,我是一名初学者,因此您可能需要详细说明答案 import cv2 import numpy as np filename = 'image.jpg' img = cv2.imread(filename) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) gray = np.float32(gray)

我对OpenCV和Python还是新手。我正在使用以下哈里斯角点检测代码。如您所见,结果也在下面给出。现在,我如何计算被检测为这些红点的特征的数量?请注意,我是一名初学者,因此您可能需要详细说明答案

import cv2
import numpy as np

filename = 'image.jpg'
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)

dst = cv2.dilate(dst,None)

img[dst>0.01*dst.max()]=[0,0,255]

cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

此行在Harris角点响应图中查找超过检测阈值的任何位置,并将这些位置设置为红色:

img[dst>0.01*dst.max()]=[0,0255]
Harris角点检测器函数返回的是一个响应图,该响应图给出了特定像素是角点的“概率”。因此,如果我们对这个响应图进行阈值化,它将给出角点在图像中的位置。因此,此阈值贴图是一个二进制掩码,用于索引到输入图像中,以帮助您描绘这些位置。因为它是一个二进制掩码,所以您只需计算该掩码的总和,就可以知道有多少个角点:

num_corners=np.sum(dst>0.01*dst.max())
请注意,您应该在扩张步骤之前执行此操作,因为扩张步骤主要用于可视化,因此您可以更好地看到拐角。因此,在运行Harris角点检测器后立即运行上述代码:

dst=cv2.0(灰色,2,3,0.04)
num_corners=np.sum(dst>0.01*dst.max())

此行在Harris角点响应图中查找超过检测阈值的任何位置,并将这些位置设置为红色:

img[dst>0.01*dst.max()]=[0,0255]
Harris角点检测器函数返回的是一个响应图,该响应图给出了特定像素是角点的“概率”。因此,如果我们对这个响应图进行阈值化,它将给出角点在图像中的位置。因此,此阈值贴图是一个二进制掩码,用于索引到输入图像中,以帮助您描绘这些位置。因为它是一个二进制掩码,所以您只需计算该掩码的总和,就可以知道有多少个角点:

num_corners=np.sum(dst>0.01*dst.max())
请注意,您应该在扩张步骤之前执行此操作,因为扩张步骤主要用于可视化,因此您可以更好地看到拐角。因此,在运行Harris角点检测器后立即运行上述代码:

dst=cv2.0(灰色,2,3,0.04)
num_corners=np.sum(dst>0.01*dst.max())