【问题标题】:How to detect objects in a video opencv with Python? [closed]如何使用 Python 检测视频 opencv 中的对象? [关闭]
【发布时间】:2016-02-26 20:46:16
【问题描述】:

我有一个由正方形、矩形、三角形等不同对象组成的视频。我不知何故需要检测并只显示方形物体。所以在每一帧中,如果有一个正方形,那很好,但如果有一个三角形或矩形,那么它应该显示它。我正在使用背景减法,我能够检测到所有三个对象并在它们周围创建一个边界框。但我无法弄清楚如何只显示方形对象。

【问题讨论】:

标签: python opencv frames


【解决方案1】:

您可以使用以下算法:

-执行背景减法,就像你目前正在做的那样

-将前景包含在轮廓中(使用 findContours(,,,) 然后 drawContours(,,,) 函数)

-将获得的轮廓包围在边界框中(使用boundingRect(,,,)函数)

-如果边界框的面积大约等于封闭轮廓的面积,则形状是正方形或矩形,而不是三角形。 (包围一个三角形的框的很大一部分将位于三角形之外)

- 如果 boundingBox 的高度大约等于它的宽度,那么它是一个正方形。 (通过 Rect.height 和 Rect.width 访问高度和宽度)

【讨论】:

    【解决方案2】:

    您的对象是如何填充的还是只是一个轮廓? 在任何一种情况下,我都会采取的方法是通过找到最大梯度或仅通过边界框来检测顶点。顶点将位于边界框上。一旦有了顶点,就可以通过查找连续顶点之间的距离来判断对象是正方形还是矩形。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      相关资源
      最近更新 更多