【问题标题】:How to detect corner with specific angle degree如何检测具有特定角度的角
【发布时间】:2013-03-28 03:23:58
【问题描述】:

我有一个等边三角形和一个矩形的图像:

我只想检测三角形的 3 个角。我按照OpenCV Harris corner detector tutorial 我看到三角形的所有角点的阈值 = 80(当矩形的所有 4 个角点的阈值 = 255 时)。但是我没有找到阈值和程度之间的联系。

例如,如何找到在 [55,65] 度范围内的角?
这是输出 Mat http://pastebin.com/raw.php?i=qNidEAG0

P/s:我对CV很陌生,希望你能提供更多细节!

【问题讨论】:

    标签: opencv image-processing feature-detection corner-detection


    【解决方案1】:

    看来我找到了可能的解决方案。我已经在 Mathematica 上实现了它,并且能够解释基本步骤。

    1. 使用查找角点运算符并获得最强的角点。使用 Harris 算子。
    2. 查找轮廓 (cv::FindContours)。

    3. 为每个轮廓中的每个角画一个圆并找到圆和轮廓之间的交点。 OpenCV中没有现成的函数,需要自己实现。

    4. 现在对于每个角,您都有三个点的坐标:角和轮廓两侧的两个点。使用dot product 评估角度就足够了:

    结果:

    【讨论】:

    • 第一步,您的意思是从 cv::cornerHarris 中找到结果的所有局部最大值?
    • 很好的解决方案!我认为在第 3 点找到交点的最简单方法是在空(空白)图像上绘制圆圈,并在此图像和轮廓图像上使用 & 运算符。结果应该是所有的交点。
    • 当轮廓之间的距离小于圆半径时,这不起作用。在这种情况下,你会得到很多错误的交叉点。
    • @brotherofken - 你是对的,但它很容易修复 - 只需在单独的图像上绘制每个圆圈或找到角落之间的最小距离并使用较小的半径。
    猜你喜欢
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2011-11-30
    相关资源
    最近更新 更多