如何使用带有OpenCV的Harris探测器正确探测角落?

时间:2015-05-21 04:31:28

标签: python opencv image-processing

我正在测试一些图像处理,以便从数字指纹中获取 minutiae 。我到目前为止这样做了:

  1. 均衡直方图
  2. 二值化
  3. 应用Zhang-Suen算法进行细线化(这不能正常工作)。
  4. 尝试确定细化图像中的角点并显示它们。
  5. 因此,我获得的修改是:

    enter image description here enter image description here enter image description here enter image description here

    但是,我无法在最后一张图片中获取可能的角落,这些角落属于thinned Mat对象的实例。

    这是试图摆脱困境的代码:

    corners_image = cornerHarris(thinned,1,1,0.04)
    corners_image = dilate(corners_image,None)
    

    但是在结果矩阵上尝试imshow会显示如下内容:

    enter image description here

    黑色图片

    我该如何确定角落?

1 个答案:

答案 0 :(得分:2)

实际上cv::cornerHarris会返回核心响应,而非角点本身。看起来您的图片回复太小。

如果您想要显示角落,您可能会获得较大的某些threshold参数的响应,那么您可以在原始图像上标记此点,如下所示:

corners = cv2.cvtColor(thinned, cv2.COLOR_GRAY2BGR)
threshold = 0.1*corners_image.max()
corners [corners_image>threshold] = [0,0,255]
cv2.imshow('corners', corners)

然后你可以拨打imshow,红点将对应角点。您很可能需要调整阈值参数以获得所需的结果。

tutorial中查看更多详情。