Closed. This question needs to be more focused。它当前不接受答案。












想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。

4年前关闭。



Improve this question




我有一个包含不同对象的视频,例如正方形,矩形,三角形。我某种程度上只需要检测和显示方形物体。因此,在每帧中,如果有一个正方形,那很好,但是如果有一个三角形或矩形,那么它应该显示它。我正在使用背景减法,并且能够检测所有三个对象并在它们周围创建一个边框。但是我不知道如何只显示方形对象。

最佳答案

您可以使用以下算法:

-执行背景减法,如您目前正在做的

-在轮廓中封闭前景(使用findContours(,,,),然后使用drawContours(,,,)函数)

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

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

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

10-07 19:55
查看更多