opencv - 检测多个相同颜色的矩形并获取它们的坐标

opencv - Detecting multiple rectangles of the same color and getting their coordinates

我需要检测白色矩形并在摄像头输入上获取它们的坐标,如下所示:

我一直在阅读,我认为我需要放置一个 hsv 过滤器,然后将阈值应用于输入。但是,对于跟踪部分,我阅读了三种方法:fincontours、houghline 和 cvblob。但我不太确定对于这种具有相同颜色的统一对象,哪个是 best/simplest。具体来说,我需要知道边界的坐标,因为我需要知道另一个对象是在其中一条线内(以及在哪一条线内)还是在两条线的中间。任何建议表示赞赏。

编辑:

相机将位于街道的顶端,因此在应用程序中它们将是矩形。我只是没有在 google.

中找到这样的图片

正如@Miki 所说,那些不是矩形。它们是受 透视 变换影响的矩形。你应该寻找四边形检测。如果你想要它是通用的,这不是一件容易的事。

编辑:

根据您的编辑,要检测图像中的矩形,您需要进行一些其他测量。因为在您的案例中应用矩形检测算法会导致许多误报。

矩形检测:

  1. 应用 Canny 或任何其他边缘检测。
  2. 应用霍夫线。
  3. 找到夹角为 90 度(或接近 90 +-5)的直线对。
  4. 找到共同代表一个矩形的对。这并不难,您可能取决于线条的方向是相反的,并且它们相对于屏幕角的角度相同。

隔离需要的矩形:

你会得到很多误报。所以,你需要过滤它们。从您提供的信息很少,很难说出如何过滤它们。但是颜色应该可以正常工作。只需删除具有不需要的颜色的矩形即可。

你们中的许多人还依赖于矩形的对齐方式。您可以隔离与其他矩形不垂直对齐的矩形