OpenCV 中如何使用 Shi-Tomasi 角点检测?

推荐答案

在 OpenCV 中,使用 Shi-Tomasi 角点检测可以通过 cv2.goodFeaturesToTrack() 函数来实现。以下是一个简单的示例代码:

-- -------------------- ---- -------
------ ---
------ ----- -- --

- ----
----- - -----------------------
---- - ------------------- -------------------

- ---------- ----
------- - ----------------------------- --------------- ------------------ ---------------

- ----
-- ------- -- --- -----
    ------- - ----------------
    --- ------ -- --------
        -- - - --------------
        ----------------- --- --- -- --- ---- --- ---

- ----
---------------------- --------- ------
--------------
-----------------------

本题详细解读

1. cv2.goodFeaturesToTrack() 函数

cv2.goodFeaturesToTrack() 是 OpenCV 中用于 Shi-Tomasi 角点检测的函数。它的参数如下:

  • image: 输入图像,通常是灰度图像。
  • maxCorners: 检测到的最大角点数量。如果检测到的角点数量超过这个值,只返回最强的角点。
  • qualityLevel: 角点质量水平的阈值。这个值乘以图像中最大角点响应值,得到的最小响应值。低于这个值的角点将被忽略。
  • minDistance: 角点之间的最小欧氏距离。如果两个角点之间的距离小于这个值,较弱的角点将被忽略。

2. 角点的绘制

检测到的角点是以浮点数形式返回的,为了方便绘制,我们将其转换为整数类型。然后使用 cv2.circle() 函数在图像上绘制这些角点。

3. 结果展示

最后,使用 cv2.imshow() 函数显示带有检测到的角点的图像。

4. 注意事项

  • Shi-Tomasi 角点检测是基于 Harris 角点检测的改进版本,它在某些情况下比 Harris 角点检测更有效。
  • qualityLevelminDistance 参数的选择对检测结果有很大影响,需要根据具体应用场景进行调整。
纠错
反馈