我在平面上有一些具有透视变换的图像。

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

这是示例:

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

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

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

最佳答案

这是我在未纠正透 View 问题的情况下所做的两个快速测试。

数学形态:

  • 提取红色通道
  • 白色大礼帽,可以检测所有明亮区域,但没有较大的明亮反射。
  • 白色小礼帽,以便仅检测菱形之间的细线
  • 2的结果减去3的结果。菱形之间的线变得更细甚至消失。
  • 打开以清理最终结果。

  • 这是两个结果:Image1Image2。主要问题是菱形的大小不同(放大率和透 View 不同),这在数学形态学上可能会出现问题。

    所以这是的另一种使用霍夫变换的解决方案:
  • 从先前算法的步骤3的结果图像开始。
  • 您应用霍夫变换。

  • 结果如下:Hough1Hough2。然后,您必须在是否接触菱形的线之间进行过滤,但是您可以使用我的第一种算法。即使第一种算法未检测到所有菱形,大多数菱形也将被检测到,并且足以检测出接触菱形的线。然后,线相交将成为您要寻找的质心。

    关于opencv - OpenCV:如何检测图像上的菱形?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38706642/

    10-11 16:16