1

我用有透视变换的飞机哼了一些图像。OpenCV:如何检测图像上的菱形?

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

这里是例子:

enter image description here enter image description here

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

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

+0

有很多可能的方式来做到这一点,但他们都不是很容易做到,做好工作并向您展示。你试过什么了? –

回答

4

这是我刚刚做的两个快速测试,没有更正透视问题。

数学形态学

  1. 提取红色通道
  2. 白色的大顶帽,以检测所有明亮的区域,但没有大亮反射。
  3. 小白色礼帽为了仅检测菱形之间的细线
  4. 2的结果减去3的结果菱形之间的线然后更薄或甚至消失。
  5. 开始清理最终结果。

这里有两个结果:Image1Image2。主要问题是菱形不具有相同的尺寸(不同的放大倍数和透视图),这可能与数学形态学有关。

因此,这里是使用霍夫的其他溶液变换

  • 你开始用所得的第3步从以前算法的图像。
  • 您应用霍夫变换。
  • 以下是结果:Hough1Hough2。然后你必须在接触菱形的线条之间过滤,但是你可以使用我的第一个算法。即使所有的菱形都没有被第一种算法检测到,大部分都会是,并且它将足以检测到接触菱形的线条。然后线交点将是您正在寻找的质心。

    +0

    很好的答案。在帖子本身中包含图片会更好。有没有什么方法可以使用检测到的虚线修正图像? – mrgloom

    +0

    嗯......问题是将线交点与图像上的确切位置相匹配,这太痛苦了,因为太阳能电池板是不同的。所以我宁愿使用阈值来检测面板边界,然后使用拐角。 – FiReTiTi