OpenCV:如何检测图像上的菱形?

时间:2016-08-01 19:26:33

标签: opencv computer-vision detection projection perspectivecamera

我讨厌一些带有透视变换的平面图像。

我需要检测每个白色菱形或菱形本身的中心。

以下是示例:

enter image description here enter image description here

正如我所说,如果我们纠正图像,可以通过简单的模板匹配来解决问题,但我需要自动完成。

OpenCV中是否有适合此任务的功能?还有其他想法吗?

1 个答案:

答案 0 :(得分:4)

以下是我在没有纠正透视问题的情况下进行的两次快速测试。

数学形态

  1. 提取红色频道
  2. 大白帽,以便检测所有明亮的区域,但没有大的明亮反射。
  3. 小白色礼帽只能检测菱形之间的细线
  4. 结果2减去结果3.菱形之间的线条更薄甚至消失。
  5. 打开清洁最终结果。
  6. 以下是两个结果:Image1Image2。主要问题是菱形不具有相同的尺寸(不同的放大率和透视图),这可能与数学形态有问题。

    所以这是使用Hough变换的其他解决方案

    1. 您可以从上一个算法开始执行步骤3的结果图像。
    2. 你应用霍夫变换。
    3. 结果如下:Hough1Hough2。然后你必须在触摸菱形的线之间进行过滤,但是你可以使用我的第一个算法。即使第一个算法没有检测到所有的菱形,大多数都是,并且它足以检测接触菱形的线条。然后,线交点将是您正在寻找的质心。