【问题标题】:How to count number of features detected through Harris Corner Detection?如何计算通过哈里斯角检测检测到的特征数量?
【发布时间】:2020-10-15 12:55:22
【问题描述】:

我还是 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()

【问题讨论】:

    标签: python opencv image-processing feature-extraction feature-detection


    【解决方案1】:

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

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

    从 Harris 角点检测器函数返回的是一个响应图,它为您提供特定像素是角点的“概率”。因此,如果我们对该响应图进行阈值处理,它将为我们提供图像中角点所在的位置。因此,这个阈值映射是一个二进制掩码,用于索引输入图像,帮助您描绘这些位置的位置。因为它是一个二元掩码,你可以只计算这个掩码的总和来告诉你有多少个角点:

    num_corners = np.sum(dst > 0.01 * dst.max())
    

    请注意,您应该在膨胀步骤之前执行此操作,因为膨胀步骤主要用于可视化,以便您可以更好地看到角落。因此,在运行 Harris 角点检测器后立即运行上述代码:

    dst = cv2.cornerHarris(gray,2,3,0.04)
    num_corners = np.sum(dst > 0.01 * dst.max())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 2016-03-16
      • 2014-12-14
      • 2016-12-20
      • 2020-04-15
      • 1970-01-01
      • 2021-05-08
      相关资源
      最近更新 更多